環境:Windows Server 2012,IIS8,.Net 4 Web應用程序。 當我呼叫這樣的網絡服務(AJAX呼叫)時:http://site.com/srv.asmx/getSomething 我的請求被重定向(302)到http://site.com/srv.asmx/getSomething/Default.aspx 而不是調用getSomething方法。Web服務調用(asmx)重定向到default.aspx
有沒有人見過這個?就好像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處理程序(其中之一)列在頂部。這意味着它是第一個有機會處理請求的人。所以它開心地使用我的「無延伸」的Web服務調用。
* .asmx處理程序也在下面,但它沒有機會被調用。
因此,要解決這個問題,我搬到了擴展名的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" />
---跳過---
這已經解決了我的這個問題。
的問題是相同的http://forums.asp.net/t/1475462.aspx/1 – DmitryK 2013-03-25 10:07:02
你是如何調用服務中使用位置路徑? – 2013-03-25 10:39:06
來自客戶端的Ajax調用 – DmitryK 2013-03-25 11:09:22