我已经开发了一个自定义的SharePoint web服务,并将其部署到/_vti_bin/myservice.asmx。作为“普通”用户,浏览到该ASMX URL的效果很好。当我尝试浏览到"/_vti_bin/myservice.asmx/js“以从ASP.Net AJAX调用此服务时,我得到了一个403。如果我以不低于场管理员的身份浏览它(网站集管理员不起作用),我会得到一个403。服务器场管理员作为本地服务器管理员的角色也完全有可能允许它工作。
这是我的web服务类:
[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
}
}这是我的web部件代码的艺术,在这里我连接了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);如果我以服务器场/服务器管理员的身份登录,它就可以工作。否则,不会。web服务程序集在GAC中&在SafeControls中列出。有什么想法吗?
发布于 2010-03-17 23:05:32
好的老的进程监控器来拯救。
事实:
解决方案:
由于请求不是通过SharePoint发出的,而且默认情况下身份模拟也是打开的,因此web应用程序的BIN目录上的默认NTLM权限不够好-用户的帐户没有访问BIN目录或其中的DLL的权限。
我们授予NT AUTHORITY\Authenticated用户对该文件夹的读取访问权限(不是读取和执行,不是列出文件夹内容,只是读取),一切正常。
https://stackoverflow.com/questions/2455556
复制相似问题