我正在使用AJAX與ASMX Web服務進行通信的ASP.NET項目。其中一個頁面使用ScriptManager來引用Web服務ASMX文件。它使用絕對URI進行引用。ScriptManager服務引用生成忘記服務主機名的JS代碼
我最近更改了ASP.NET項目和Web服務以使用IIS Express。每個現在都有不同的端口號。由於此更改,ASP.NET項目的客戶端代碼無法訪問Web服務。
的ASP.NET頁面生成的HTML代碼中包含一個正確引用到Web服務:
<script src="http://localhost:2837/Service.asmx/jsdebug" type="text/javascript"></script>
然而,這個腳本只使用相對URL,而不是絕對的是指回Web服務:
Service.set_path("/Service.asmx");
所以AJAX調用Web服務方法失敗,因爲從ASP.NET應用程序的主機名代替Web服務的:
POST http://localhost:2827/Service.asmx/WebServiceMethod 500 (Internal Server Error)
請注意,上面的端口號與Web服務使用的端口號不同。以上端口號是Web應用程序使用的端口號。
的HTTP 500,因爲Web服務器正在報告產生:
沒有Web服務發現在:/Service.asmx
我怎樣才能解決這個問題,使Web服務被正確引用?
謝謝;這就說得通了。這聽起來像「域」不僅取決於主機名,還取決於端口號。那是對的嗎? – Sam
@Sam是的 – Damith