Web services SharePoint Web服务凭据

Web services SharePoint Web服务凭据,web-services,sharepoint,infopath,Web Services,Sharepoint,Infopath,我正在尝试使用InfoPath表单的代码隐藏中的标准SharePoint web service GetWeb。表单作为工作流的一部分承载,因此使用表单服务加载到浏览器中。因此,它将在登录SharePoint的当前用户的凭据上运行。如果用户在网站的所有者组中,web服务将运行,但如果用户在贡献者或读者组中,则会出现“HTTP 401 Unauthorized”错误。在此之后,我还使用了getlistweb服务,但只要用户具有读卡器权限,它就会运行 我只使用GetWeb调用来获取GetList调用

我正在尝试使用InfoPath表单的代码隐藏中的标准SharePoint web service GetWeb。表单作为工作流的一部分承载,因此使用表单服务加载到浏览器中。因此,它将在登录SharePoint的当前用户的凭据上运行。如果用户在网站的所有者组中,web服务将运行,但如果用户在贡献者或读者组中,则会出现“HTTP 401 Unauthorized”错误。在此之后,我还使用了getlistweb服务,但只要用户具有读卡器权限,它就会运行

我只使用GetWeb调用来获取GetList调用所需的WebId作为参数。我通过将WebId传递到表单中而不是让表单查找来解决权限问题。现在一切都好了

但是,我想知道为什么GetWeb需要更高的权限,以及如何/如果可以控制这些权限。我还没有找到关于不同现成web服务所需权限的任何文档,更不用说如何更改它们了


[注意]我使用数据连接文件不是有原因的,但还是要感谢您的建议。

您可以通过管理数据连接库中的web服务详细信息来消除对web服务凭据进行硬编码的需要。UDCX文件包括用于存储web服务凭据的架构,并且文件本身可以从管理中心集中管理

在管理中心中使用数据连接文件:

Web服务credentoils位于(7):

如果您正在使用sharepoint client for GetList。然后您可以查看下面的代码

ClientContext context = new ClientContext(siteURL);
UserInfo user = new UserInfo();
SecureString passWord = new SecureString();
foreach (char c in user.Pwd.ToCharArray()) passWord.AppendChar(c);
context.Credentials = new SharePointOnlineCredentials(user.UserName, passWord);
//context.Credentials = new System.Net.NetworkCredential(userName, password);
Web web = context.Web;
List list = web.Lists.GetByTitle(documentLibraryName);

CamlQuery query = new CamlQuery();
ListItemCollection items = list.GetItems(query);
context.Load(items);
context.ExecuteQuery();

站点是发布站点吗?不,它使用空白站点定义。我不使用数据连接,就像我在设计时创建它们一样,IfopPATH坚持将“本地主机”解析为物理开发机器名称。当它部署到实时服务器时,这几乎不是理想的选择。然而,我仍然不清楚WSS中的权限级别与web服务访问之间的关系。它做了什么?它是如何工作的?请添加解释,使此答案对未来的访问者更有用。谢谢