2012-02-08 61 views
1

我想在C#控制台应用程序中调用sharepoint webservices。当我使用本地系统的WSS作为目标应用程序时,代码工作正常,但不能与通过网络访问的其他服务器一起使用。以下是我的代码。Sharepoint Webservice 401错误

Webs service = new Webs(); 
      service.PreAuthenticate = true; 
      service.Credentials = new System.Net.NetworkCredential(login, password); 
      //service.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 

      service.Url = url + @"/_vti_bin/webs.asmx"; 

      XmlNode sites = null; 

      try 
      { 
       sites = service.GetWebCollection(); 
      } 
      catch (Exception ex) 
      { 
       return; 
      } 

注意事项: 1.它既不DefaultNetworkCredentials也不符合我的域用户凭据运行。 2.如果在浏览器中成功粘贴了Web服务端点,则会列出Web服务方法。 3.在任何情况下(访问远程服务器),我都会收到401未经授权的错误。

我错过了什么吗?

回答

1

使用像Fiddler这样的工具来捕获控制台应用程序和SharePoint之间的http流量。这将有助于调试您的问题。

+0

虽然这并没有解决问题,但至少证实我的客户服务电话没有问题。服务器上存在访问权限问题。 – 2012-02-10 06:39:16

0

您是否检查过您的应用程序池帐户?可能是您的应用程序池帐户没有足够的权限。将您的应用程序池帐户更改为在您的网站上拥有完全权限的帐户,然后重试。它应该工作。

我还发现,如果您安装了Microsoft Windows XP Service Pack 2(SP2)或Microsoft Windows Server 2003 Service Pack 1(SP1),这可能是已知问题。要解决这个问题,您可以按照此知识库文章中的步骤 - http://support.microsoft.com/?scid=kb;en-us;896861&x=14&y=17