Я разработал пользовательский веб-сервис SharePoint и развернул его в /_vti_bin/myservice.asmx. Как обычный пользователь, просмотр этого URL-адреса ASMX работает нормально. Когда я пытаюсь перейти к «/_vti_bin/myservice.asmx/js», как требуется для вызова этой службы из ASP.Net AJAX, я получаю 403. Если я обращаюсь к нему не меньше, чем администратор фермы (администратор семейства сайтов не не получается), я получаю 403. Вполне возможно, что роль администратора фермы как администратора локального сервера также позволяет ему работать.
Это мой класс веб-сервиса:
[WebService(Namespace = "http://sharepointservices.genericnamespace.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class ApprovalSvc : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public XmlDocument GetInboxItems(string inboxName, string s_Id)
{
// code removed
}
}
Это искусство кода моей веб-части, где я подключаю ASP.Net AJAX:
ScriptManager scriptMgr = new ScriptManager();
string webUrl = SPContext.Current.Web.Url;
ServiceReference srvRef = new ServiceReference(webUrl + "/_vti_bin/ApprovalSvc.asmx");
scriptMgr.Services.Add(srvRef);
this.Controls.Add(scriptMgr);
Если я вошел в систему как администратор фермы / сервера, это работает. В противном случае нет. Сборка веб-службы находится в GAC и перечислена в SafeControls. Есть идеи?