我正在开发 ASP.NET Web 表单项目。 在特定情况下,当用户选中/取消选中 JavaScript 中的复选框时,我想设置一些 session 值。 在 JavaScript 中, session 不可访问,因此我开发了一个 Web 服务并调用 Web 服务方法,该 Web 方法将设置 session 的值。 这是我的 js Web 服务调用。
$.ajax({ 异步:假, url: baseUrl + '/' + "WebServices/ExtraInfoWebService.asmx/MyWebMethod", 数据: { hdnValue: $("[id$='hdnCCSarray']").val() }, 成功:得到 });
此 Web 服务调用在具有单个 IIS 服务器的开发计算机上完美运行,但在具有多个 IIS 框的生产环境中失败。我仔细观察发现这个webservice调用只在IE浏览器上不起作用。 如果有人对此有任何建议,请告诉我。
提前致谢!!!
最佳答案
如果您在 Web Farm 中运行,这意味着您无法使用默认 session 存储模式 (InProc),因为 Web Farm 的不同节点将无法同步 session 值。您将需要使用进程外 session 模式。有 2 个可用:
- 状态服务器
- SQLServer
您可以在this MSDN article
中阅读有关不同 session 状态模式的更多信息。 .
或者更好:重构您的代码,使其根本不依赖于任何 session 。我发现拥有非无状态的 Web 服务是一个非常糟糕的设计。
关于javascript - $ajax webservice 在 webfarm 场景中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16476120/