1. 程式人生 > >.net4.0的razor下ajax無法訪問asmx方法解決

.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>