为Web服务设置IIS

时间:2017-06-16 18:23:19

标签: javascript vb.net iis-7 cors

我无法获得任何教程或设置说明,以允许javascript函数使用Web服务。在我的电脑上,Chrome只会抛出一个

  

500(内部服务器错误)

,并从服务器运行网页,IE抛出

  

需要跨源资源共享(CORS)。

  

需要CORS预检。

我已将所需的跨域设置添加到webconfig,但它仍然无效。

<configuration>
    <system.web>
      <customErrors mode="Off"/>
      <compilation strict="false" explicit="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5"  />
      <webServices>
        <!-- added because asmx -->
        <protocols>
          <add name="HttpGet"/>
          <add name="HttpPost"/>
        </protocols>
      </webServices>
    </system.web>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>

</configuration>

使用Javascript:

function GetMember() {
    $.ajax({
        type: "POST",
        url: "https://www.mywebsite.org/Callsickapp/Webservice1.asmx/HelloWorld",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnGetMemberSuccess,
        error: OnGetMemberError
    });
}
document.getElementById("btnCallService").onclick = GetMember;
function OnGetMemberSuccess(data, status) {
    //jQuery code will go here...

    document.getElementById("answers").innerHTML= data.d;
}
function OnGetMemberError(request, status, error) {
    //jQuery code will go here...
    document.getElementById("answers").innerHTML= request.statusText
}

我错过了什么?

1 个答案:

答案 0 :(得分:0)

我只需要实际阅读Visual Studio生成的Web服务.vb文件顶部的注释。

'To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.

' <System.Web.Script.Services.ScriptService()> _

简单&#34; HelloWorld&#34; Web服务和教程中的其他Web服务现在工作正常。