【发布时间】:2009-07-30 17:15:52
【问题描述】:
尝试在我们的一个平台上调用 SharePoint 的 Web 服务时出现错误。首先,我们有开发 (DEV)、测试 (QA) 和生产 (PROD) SharePoint 服务器。 QA 和 PROD 服务器几乎相同。我们有一个 ASP.NET Web 服务,它作为一个单独的应用程序放在它们上。我们的数据输入表单通过 Web 服务插入/更新到 SQL 数据库中,并且在某些情况下调用一些 SharePoints Web 服务(列表、dws)。
我们在从我们的 Web 服务调用 PROD 上的 SharePoint 的 Web 服务时遇到了问题,但是在 QA(或 DEV)上没有问题。在我们的 Web 服务代码中,我们有一个对 SharePoint Web 服务(列表和 dws)的 Web 引用。当通过我们的一种表单进行新条目时,我们尝试调用这些 Web 服务来创建列表项/文件夹。在 QA 上,创建列表项/文件夹没有问题。填写表格,调用我们的 Web 服务——它调用 SharePoint Web 服务并创建列表项/文件夹。
在 PROD 上,当我们尝试调用 SharePoint Web 服务时出现以下错误:
无法连接到远程服务器
在 System.Net.HttpWebRequest.GetRequestStream() 在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(字符串方法名,对象 [] 参数) ...
但是,为了更有趣,如果我直接从我的个人计算机调用 PROD SharePoint Web 服务,则创建列表项/文件夹没有问题。只有当我们的 Web 服务尝试调用 PROD SharePoint Web 服务时,我们才会遇到问题。我们查看了许多不同的 web.config 文件,寻找 QA 和 PROD 的差异,但还没有提出任何建议。
如果有人有任何指点,他们将不胜感激。谢谢。
更新:我刚刚尝试重构上述方法以使用 SharePoint 对象模型 API,但遇到了未经授权的错误。使用对象模型 API 时,凭据似乎没有正确传递,因为它正在尝试使用 MOSS 服务器凭据。有什么方法可以告诉它要使用哪些凭据,就像您使用 Web 服务 api 一样?
docLibList.Credentials = System.Net.CredentialCache.DefaultCredentials;
谢谢。
【问题讨论】:
-
调用 SharePoint Web 服务的 ASP.NET 服务是否位于相同的服务器(QA 和 PROD)上?如果是这样,为什么不直接使用 ASP.NET 服务调用对象模型?
-
从另一个服务调用同一个盒子上的网络服务是没有意义的......