Сделайте вызов функции AJAX для .svc в другом проекте - PullRequest
1 голос
/ 13 мая 2011

У меня есть два проекта в решении Visual Studio: MyApp.WebService и MyApp.WebUI.

У меня есть страница просмотра в моем проекте WebUI по адресу /Views/Home/Index.aspx, что делает этот вызов ajax:

$.ajax({
    type: "GET",
    url: "MyService.svc/HelloWorld",
    data: null,
    processData: true,
    contentType: "application/json",
    dataType: "json", 
    cache: false,
    success: function (data) {
        alert(data.d);
    }
});

У меня есть файл .svc в корне моего проекта WebService с именем MyService.svc, который содержит эту функцию:

[OperationContract]
[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public string HelloWorld()
{
    return "Hello, world!";
}

Я получаю сообщение об ошибкеон не может найти местоположение URL, который я звоню.Я подозреваю, что это как-то связано с тем, что файл .svc находится в других проектах.Есть ли что-то, что мне нужно сделать, чтобы позвонить?

1 Ответ

1 голос
/ 13 мая 2011

Если вы используете два разных проекта, то либо проекты размещаются в разных портах (по умолчанию для VS), либо в разных виртуальных каталогах. В любом случае запрос от одного проекта к другому, как вы делаете, не будет работать. Если у вас есть два проекта в разных портах (например, MyApp.WebService в 6789 и MyApp.WebUI в 7890), то вызов из /Views/Home/Index.aspx (который на самом деле http://machine -name: 7890 /Views/Home/Index.aspx) в MyService.svc / HelloWorld будет сделан в http://machine -name : 7890 / MyService.svc / HelloWorld, пока он должен был быть сделан на http://machine -name : 6789 / MyService.svc.HelloWorld. Запустив Fiddler при открытии страницы, вы увидите адрес, по которому осуществляется вызов . Кроме того, если вы щелкнете правой кнопкой мыши MyService.svc на VS и выберите «Просмотр в браузере», он покажет вам точный адрес, по которому должен быть сделан вызов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...