.net4.0的razor下ajax無法訪問asmx方法解決
最近我接手了一個專案,其中有一項是要把實現的功能放到asmx裡並且能通過ajax訪問。於是我建立了一個asmx,並且把[System.Web.Script.Services.ScriptService]取消了註釋,但是當我呼叫asmx的時候發現無法呼叫。報404的錯誤,我原本以為是因為我為了除錯方便於是在一個controller下的頁面添加了訪問它的ajax,又沒有把完整的路徑放進去,導致它找的位置是/XXController/XXX.asmx/XXX,而我把asmx放在了根目錄下的Service資料夾所以找不到,於是我將完整的路徑放了進去發現也不行。後續我查了很久,發現如果想要呼叫asmx,還需要在web.config進行配置,配置完成後再次呼叫,結果報500的錯誤,經過檢查發現還是因為配置的問題,經過配置後程序就可以正常呼叫asmx了,配置如下:
500錯誤配置如下
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
404錯誤配置如下
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<handlers>
<add verb="*" path="*.asmx" name="asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</handlers>
</system.webServer>