Прокси Javascript ASMX с использованием разных заголовков хоста - PullRequest
0 голосов
/ 28 июня 2011

Я использую сервис ASMX в своем приложении и хотел бы, чтобы он указывал на URL определенного веб-сервиса.

Я определил это следующим образом:

string serviceUrl = SPContext.Current.Web.Url + "/_vti_bin/MyService.asmx";

ScriptManager scriptManager = ScriptManager.GetCurrent(Page);

if (scriptManager != null) scriptManager.Services.Add(new ServiceReference(serviceUrl));
else
{
    scriptManager = new ScriptManager();
    scriptManager.Services.Add(new ServiceReference(serviceUrl));

    Page.Form.Controls.Add(scriptManager);
}

Здесь SPContext.Current.Web.Url ==> http://mysite/mysubsite

Но когда я вызываю службу из Javascript, как показано ниже, проверка заголовка узла в Firebug предполагает, что прокси-сервер Javascript фактически вызывает службу по адресу: http://mysite/_vti_bin/MyService.asmx/Execute

MyWorkCore.API.Execute("GetData", dataXml, function (response) {
    // doing something here
});

1 Ответ

0 голосов
/ 20 декабря 2011

Вы указали относительный путь к серверу, как я вижу. Попробуйте использовать и разрешить путь следующим образом:

~site/_vti_bin/MyService.asmx

В классе SPUtility есть функция, которая разрешает такие пути с префиксами с префиксами "~ site" (преобразуется в текущий URL SPWeb) и "~ sitecollection", которые преобразуются в текущий URL SPSite.

Здесь «текущий» означает SPContext.Current.Site для SPSite и SPContext.Current.Web для SPWeb.

...