Я пытаюсь получить доступ к веб-службе .Net (.asmx), которую я создал и которая работает в этом месте: http://sebtest.somee.com/page/webservice/PositionService.asmx
Вызов службы локально работает нормально, но, к сожалению, использование его с помощью jQuery на сервере не удается. Услуга написана следующим образом:
namespace WcfService1
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// Below line allows the web service to be called through HTTP protocol.
[ScriptService]
public class ServiceImpl : System.Web.Services.WebService, IService1j
{
[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public PositionReturnType getLastLocation(){
.
.
Я также создал веб-страницу asp.net, которая при запуске напрямую пытается получить доступ к методу getLastLocation. Страницу можно найти здесь: http://sebtest.somee.com/page/
Как видите, я получаю только ошибку.
Код веб-страницы:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
<title>Call web service test</title>
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script>
<script type="text/javascript">
function CallService() {
$.ajax({
type: "POST",
url: "http://sebtest.somee.com/page/webservice/PositionService.asmx?op=getLastLocation",
dataType: "json",
success: function (data, textStatus, jqXHR) {
alert('worked');
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR + ' - ' + textStatus + ' - ' + errorThrown);
}
});
}
</script>
</head>
<body onload="CallService()">
<form runat="server">
Я понял, что в большинстве примеров используется форма URL «Имя службы / метода», на которую моя служба не отвечает. Вместо этого метод можно просмотреть по адресу sebtest.somee.com/page/webservice/PositionService.asmx?op=getLastLocation. Может ли это быть какой-то проблемой?
Буду рад любой помощи, которую вы можете оказать мне! Может быть, вы могли бы привести пример, позвонив в мою службу.
Заранее большое спасибо за помощь:)
Себастьян
Редактировать: теперь я понял, что могу вручную открыть веб-сервис для запросов HTTP Get и HTTP Post, изменив файл web.config. Я сделал это и попытался получить доступ к веб-сервису сейчас с веб-страницы, работающей локально на моем рабочем столе, следующим образом:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
function CallService() {
$.ajax({
type: "GET",
url: "http://sebtest.somee.com/page/webservice/PositionService.asmx/getLastLocation?",
dataType: "xml",
error: function (xhr, textStatus, errorThrown) {
alert('nooo ' + xhr + ' - ' + textStatus + ' - ' + errorThrown);
},
success: function (data, textStatus, jqXHR) {
alert('jaaa ' + data + " - " + textStatus + " - " + jqXHR);
}
});
}
К сожалению, это по-прежнему приводит к вызову функции ошибки. В chrome текст ошибки не отображается, IE говорит: «Нет транспорта». Тем не менее, я также использовал Fiddler2, и там я получаю следующий ответ, который именно то, что мне нужно:
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 07 Feb 2012 13:06:37 GMT
Content-Length: 266
<?xml version="1.0" encoding="utf-8"?>
<PositionReturnType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<longtitude>3</longtitude>
<latitude>9</latitude>
</PositionReturnType>
Может быть, это поможет вам разобраться в моей проблеме? Я имею в виду, очевидно, что данные возвращаются правильно, как и ожидалось, на мой настольный компьютер, но вместо успешного вызывается функция ошибки.
Спасибо !!