使用jQuery AJAX调用WebMethod时,不会触发ASP.NET 4.0 Custom IHttpModule

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jQuery AJAX调用WebMethod时,不会触发ASP.NET 4.0 Custom IHttpModule相关的知识,希望对你有一定的参考价值。

我正在谷歌上搜索我的问题的解决方案,但我还没有找到它。

我正在将Web应用程序从.NET framework 3.5迁移到4.0,它广泛使用通过jQuery $ .ajax()调用的标记为[System.Web.Services.WebMethod(true)]的方法。此外,我有一个自定义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调用。

现在,在迁移的Web应用程序上,基于.net 4.0框架,我保留了相同的配置(将版本从3.5.0.0升级到4.0.0.0),但它不起作用。 Web服务器是相同的,具有IIS 7.0和具有集成模式的应用程序池。自定义HttpModule在第一次请求主页时调用,但不在WebMethod请求中调用。我也试图反转模块顺序没有任何影响。

你有什么建议吗?

提前致谢!

答案

5年后,我遇到了同样的问题。我在[WebMethod]文件中有一堆.aspx属性,将它们移到单独的.asmx文件中对我来说是个窍门。

以上是关于使用jQuery AJAX调用WebMethod时,不会触发ASP.NET 4.0 Custom IHttpModule的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery ajax 在 ascx 页面中调用 webmethod

使用 jQuery AJAX“401(未经授权)”的 ASP.NET 调用 WebMethod

在对 WebMethod 的 jQuery AJAX 调用中获取空响应,但 Web 方法返回 JSON

使用 jQuery Ajax 将参数传递给 WebMethod

对 .NET WebMethod 的 jQuery 调用无序运行

使用格式错误的 Json 调用 ASP.NET WebMethod 时捕获错误