尝试访问iis 6.0 Web服务时出错403

时间:2014-05-29 00:08:22

标签: c# javascript asp.net wcf iis

这是一个基本的ASP.NET Web服务。我尝试使用AJAX调用通过HTTPS访问服务。我可以直接通过HTTPS从浏览器访问该服务,但是当尝试使用JavaScript访问该服务时,我收到以下错误(来自Chrome):

无法加载资源:服务器响应状态为403(禁止) https://mobile.kilpatricktownsend.com/hh/PSWebService.asmx/GetPeople

查看iis日志显示错误更具体地说是403.1执行访问被拒绝。运行Web服务的站点配置为启用了“脚本执行”权限的应用程序。

在IIS 7.0上托管服务时,完全相同的代码可以正常工作。 IIS 6.0(它不工作)和IIS 7.0(它正在工作)都使用.NET 4.0

在iis 7.0中启用了CORS,我通过在网站上添加以下标头值在iis 6.0上启用了CORS:

名="访问控制允许来源"值=" *" 命名="接入控制允许集管和#34; value =" Origin,X-Requested-With,Content-Type,Accept"

客户端和服务器之间没有代理服务器。其他一切都是网站设置和网络的标准。

这是AJAX呼叫:

$.ajax({
    type: "POST",
    url: "https://mobile.kilpatricktownsend.com/hh/PSWebService.asmx/GetPeople",
    data: "{searchString:'" + txtBoxId.toString() + "'}",
    contentType: "application/json; charset=utf-8",
    success: getPeopleSucceed,
    dataType: "json",
    failure: getPeopleFailed
});

1 个答案:

答案 0 :(得分:0)

I can access the service from a browser over HTTPS by htting it directly

浏览器只能访问HttpGet次请求,并且无法通过浏览器访问HttpPost种方法。给出HTTP 405 : Method not allowed.错误。

在js ajax调用中,它发布了type: "POST",因此在ASP.net的情况下,请确保使用web service[WebMethod]修饰[HttpPost]方法方法

还尝试在数据中使用JSON.stringify来序列化输入数据,如:

$.ajax({
    type: "POST",
    url: "https://mobile.kilpatricktownsend.com/hh/PSWebService.asmx/GetPeople",
    data: JSON.stringify("{searchString:'" + txtBoxId.toString() + "'}"),
    contentType: "application/json; charset=utf-8",
    success: getPeopleSucceed,
    dataType: "json",
    failure: getPeopleFailed
});