gpt4 book ai didi

[WebMethod(EnableSession = true)] 时 ASP.NET Web 服务非常慢

转载 作者:行者123 更新时间:2023-12-02 18:51:33 24 4
gpt4 key购买 nike

我创建了一个 ASMX Web 服务,它在幕后执行一些 Active Directory 操作。

由于我希望在用户 session 下保留 Web 服务中的某些信息,因此我决定放置 [WebMethod(EnableSession = true)] 并开始使用 Session 变量。

但是,当我打开该选项时,从应用程序 -> Web 服务 -> 应用程序的返回时间变得非常长。 (大约一分钟或更长时间)。

如果我删除[WebMethod(EnableSession = true)],速度相当快。

有人知道这是怎么回事吗?

最佳答案

可能的原因:

  1. session 状态存储在进程外(状态服务器/SQL 服务器),并且获取/存储它需要很长时间
  2. 您正在同一 session 下发出多个并发请求(包括服务请求)。 ASP.NET 确保一次仅执行一个 session 完整( session 读/写)请求,因此多个并发请求将排队。

编辑:
对于#2,明显的解决方案是避免使用 session 状态 - 例如,您可以将相关信息放入另一个存储中,例如缓存或数据库(昂贵)。

如果您仅读取 Web 服务中的 session 状态,那么您可以利用只读 session 状态(请参阅 IReadOnlySessionState )。只读 session 状态允许并发只读请求 - 读/写请求仍会阻止所有其他请求。现在,WebMethod 属性中的 EnableSession 不支持此功能 - 它要么不提供 session ,要么提供读/写 session 。因此,解决方法之一是实现您自己的处理程序,实现 IReadOnlySessionState,然后使用 http 模块将 asmx 请求路由到该处理程序,然后将处理程序切换为默认处理程序。因为您的处理程序需要只读 session 状态,所以您将具有只读 session 状态 - 请参阅此 forum post其中已经给出了切换处理程序的 http 模块。

关于[WebMethod(EnableSession = true)] 时 ASP.NET Web 服务非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8254367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com