ASMX Javascript прокси с использованием разных заголовков хоста

Я использую сервис 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 ответ

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

~site/_vti_bin/MyService.asmx

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

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

Другие вопросы по тегам