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.