【发布时间】:2014-11-02 16:46:22
【问题描述】:
我在谷歌上搜索了很多以找到解决问题的方法,但我还没有找到。
我正在将 Web 应用程序从 .NET 框架 3.5 迁移到 4.0,它广泛使用标记为 [System.Web.Services.WebMethod(true)] 的方法,通过 jQuery 调用$.ajax()。 此外,我有一个自定义 HttpModule 来填充 CurrentPrincipal 与从 http 标头变量收到的用户信息。 此外,基于 .net 3.5 的应用程序部署在具有集成模式应用程序池的 IIS 7.0 上,并具有以下自定义模块配置:
<modules>
<remove name="ScriptModule" />
<add name="MyHttpModule" preCondition="managedHandler" type="MyNamespace.MyHttpModule, MynameSpace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx" />
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</modules>
和
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="MyHttpModule" type="MyNamespace.MyHttpModule, MynameSpace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx" />
</httpModules>
基于 .NET 3.5 框架的应用程序运行良好,并且对于所有请求,始终调用自定义 HttpModule,无论是来自标准 .net GET/POST 和 AJAX GET/POST 调用。
现在,在迁移的基于 .net 4.0 框架的 Web 应用程序上,我保留了相同的配置(将版本从 3.5.0.0 升级到 4.0.0.0)但它不起作用。 Web 服务器是相同的,具有 IIS 7.0 和集成模式的应用程序池。 自定义 HttpModule 在主页的第一个请求上调用,但对 WebMethod 请求不调用。 我也尝试过颠倒模块顺序但没有效果。
你有什么建议吗?
提前致谢!
【问题讨论】:
-
您留下了相同的配置,不要将脚本模块的版本更改为 .net 4.0.0.0 而不是 3.5.0.0 。作为
? -
如前所述,我将程序集的版本从 3.5.0.0 更改为 4.0.0.0
-
您是否也使用 .net 3.5 的 ajax 控制工具包?可能你也继续第 4 版。如果您不使用 ajax 控制工具包,那么您可以尝试删除 ScriptModule。
-
我不使用 Ajax 控制工具包。我使用jQuery通过Ajax技术调用web方法。
-
@NicolaCeliento 我也遇到了同样的问题,你找到解决这个问题的方法了吗?
标签: jquery .net-4.0 webmethod httpmodule