我有一个定义为:
的Web服务reader := decoder.Buffered()
我已将此服务发布到我的localhost,我可以使用浏览器调用并测试它,结果是:
[ScriptService]
public class LoginController : ApiController
{
[HttpGet]
[WebMethod]
public IEnumerable<string> getUsers()
{
try
{
using (var context = new questionanswerEntities())
{
var users = context.users.ToList();
string[] result = new string[users.Count];
for (int i = 0; i < users.Count; ++i)
{
user u = users[i];
result[i] = u.id + " " + u.name + " " + u.email;
}
return result;
}
}
catch (MySqlException ex)
{
throw (ex);
}
catch (EntityException ex)
{
throw (ex);
}
}
}
我需要的是从JavaScript调用此服务。我正在尝试这个:
<ArrayOfstring>
<string>1 Olcay aaa@aaa.com</string>
<string>2 Mukaddes aaa@aaa.com</string>
<string>3 Saduman sadumanertas@gmail.com</string>
<string>4 Bernam bernella@bb.com</string>
<string>8 Bernella bernella@gmail.com</string>
<string>9 Bernella bernella@gmail.com</string>
<string>10 Bernella bernella@gmail.com</string>
<string>11 Bernella bernella@gmail.com</string>
<string>12 Bernella bernella@gmail.com</string>
<string>13 Bernella bernella@gmail.com</string>
<string>14 lala loorrrrr@gmail.com</string>
<string>15 lala loorrrrr@gmail.com</string>
</ArrayOfstring>
但是得到了这个错误:
function callService() {
var url = "http://localhost:1903/QATest/login/getUsers";
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onload = function () {
var response = xhr.responseText;
console.log("XHR - onload - Result of getUsers: " + response);
document.getElementById('response').innerHTML = "Response: " + response;
};
xhr.onerror = function () {
console.log("XHR - onerror - Web servis cagirilirken hata olustu!");
};
xhr.send();
};
我的ASP.NET服务托管在我的localhost上,客户端代码托管在我的远程主机www.olcayertas.com&#39;。
我做错了什么?
更新
我已将此项目作为ASP.NET Web应用程序启动,然后选择了Web API选项。因此,没有任何asmx文件作为Web服务项目。但Exposing Web Services to Client Script建议在ASP.NET网页的客户端添加以下内容:
XMLHttpRequest cannot load http://localhost:1903/QATest/login/getUsers. Invalid HTTP status code 405
但我必须使用PHP页面中的JavaScript来调用我的服务。 我怎么能这样做?
答案 0 :(得分:1)
您需要在本地主机上配置CORS以允许来自www.olcayertas.com&#39;的请求。使用IIS,您可能只需将其添加到web.config
;
<add name="Access-Control-Allow-Origin" value="*" />
请注意,因为这会打开您对来自任何域的请求的服务。您应该只允许来自www.olcayertas.com&#39;如果您知道这是您的Web服务的唯一消费者。