asp.net - Web 服务调用 (asmx) 重定向到 default.aspx

标签 asp.net web-services iis

环境:Windows Server 2012、IIS8、.Net 4 Web 应用程序。 当我像这样调用 Web 服务(AJAX 调用)时:http://site.com/srv.asmx/getSomething 我的请求被重定向 (302) 到 http://site.com/srv.asmx/getSomething/Default.aspx 而不是调用 getSomething 方法。

有人见过这个吗?就好像 IIS(或框架?)不理解这是对 *.asmx 的请求,而只是附加默认文档。

我收到的确切错误消息:

http://site.com/filenotfound.htm?aspxerrorpath=/srv.asmx/getSomething/default.aspx 错误 404:找不到文件或页面

谢谢!

--- 更新 --- 我自己找到了解决办法

--- 解决方案 ---

此行为是由无扩展 URL 处理程序引起的。 这篇知识库文章对我帮助很大: http://support.microsoft.com/kb/2520479

我还没有尝试安装补丁(也许这是最简单的解决方案)。我刚刚重新安排了处理程序。

对于受影响的站点 applicationHost.config(位于 C:\Windows\System32\inetsrv\config 下)具有以下内容:

<location path="site.com">
    <system.webServer>
        <handlers>
            <clear />
            <add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
            <add name="TraceHandler-Integrated-4.0" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv4.0" />
            <add name="WebAdminHandler-Integrated-4.0" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv4.0" />

--- 跳过 ---

如您所见 - ExtensionlessUrl 处理程序(其中之一)列在顶部。这意味着它是第一个有机会处理请求的。所以它很高兴地消耗了我的“无扩展”网络服务调用。

*.asmx 处理程序也在下面,但没有机会被调用。

因此,为了解决此问题,我将 Extensionless URL 处理程序移至底部第二个位置(就在静态文件处理程序前面):

    <system.webServer>
        <handlers>
            <clear />
            <add name="TraceHandler-Integrated-4.0" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv4.0" />

--- 跳过 ---

这为我解决了这个问题。

最佳答案

这可能是您使用 FormAuthentication 并尝试在未登录的情况下访问该服务的原因。
您可以在这种情况下使用位置路径

  <location path="srv.asmx">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

关于asp.net - Web 服务调用 (asmx) 重定向到 default.aspx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15612036/

相关文章:

asp.net - 制作易于打印的ASP.NET页的最佳方法?

c# - CentOS 服务器上的 ASP .NET 核心控制台应用程序丢弃请求

java - JAX-WS 是否使用服务器端 stub (骨架)进行通信?

reactjs - react + asp.net core 独立项目托管(部署)建议

c# - 为什么 IDisposable 立即调用 Dispose()?

asp.net - 使用默认成员关系的 MVC3 Entity Framework

asp.net - 如何在没有代码隐藏文件的 VB.NET aspx 页面中打开 Option Strict/Infer?

web-services - 使用 jQuery .ajax 和 jQueryMobile 从 Google Books API 获取 JSONP 示例

android - 使用 Android 从云端检索数据

c# - Entity Framework : The underlying provider failed on Open - through WCF service