问题的起由是项目的需要重写了SPS的文档库的一些操作发布为WebService,由于要访问SPS对象模型,因此WebService必须发布在SPS站点之下,这样发布的WebService默认就关闭了匿名访问,而WebService客户端代理默认是不继承运行WebService客户端代理应用程序的安全上下文凭证的,因此如果不对WebService客户端代理加上安全凭证信息的访问都是没有授权的.
WebService代理类有一个凭证属性用来为WebService调用提供凭证,基本语法如下:
//Assigning DefaultCredentials to the Credentials property
//of the Web service client proxy (myProxy).
myProxy.Credentials= System.Net.CredentialCache.DefaultCredentials;
通常有两种凭证信息可以使用:一是运行WebService客户端代理的应用程序的安全上下文凭证.二是可以自己创建一个用户帐号以提供凭证.
以下代码创建一个用户凭证,将这个凭证赋给WebService代理类的凭证属性即可用该帐号访问WebService了,这种用法通常用来处理WebService内部操作和帐号没有关系的情况.
System.Net.NetworkCredential credentials=new NetworkCredential("UserName","UserPWD","Domain";
以下代码使用运行WebService客户端代理的应用程序的安全上下文凭证运行WebService,对于C/S架构的客户端程序,该帐号默认是Window凭证,即运行客户端程序的用户、密码、域。对于ASP.NET应用程序,默认是 ASP.NET 辅助进程的标识的用户凭据,如果启用了Web.Config中的用户模拟属性,这该帐号是客户端当前Window帐号。
myProxy.Credentials= System.Net.CredentialCache.DefaultCredentials;
注意第二种验证方式服务端和客户端在同一台机器时会出现一些权限问题,分开程序即可
WebService代理类有一个凭证属性用来为WebService调用提供凭证,基本语法如下:
//Assigning DefaultCredentials to the Credentials property
//of the Web service client proxy (myProxy).
myProxy.Credentials= System.Net.CredentialCache.DefaultCredentials;
通常有两种凭证信息可以使用:一是运行WebService客户端代理的应用程序的安全上下文凭证.二是可以自己创建一个用户帐号以提供凭证.
以下代码创建一个用户凭证,将这个凭证赋给WebService代理类的凭证属性即可用该帐号访问WebService了,这种用法通常用来处理WebService内部操作和帐号没有关系的情况.
System.Net.NetworkCredential credentials=new NetworkCredential("UserName","UserPWD","Domain";
以下代码使用运行WebService客户端代理的应用程序的安全上下文凭证运行WebService,对于C/S架构的客户端程序,该帐号默认是Window凭证,即运行客户端程序的用户、密码、域。对于ASP.NET应用程序,默认是 ASP.NET 辅助进程的标识的用户凭据,如果启用了Web.Config中的用户模拟属性,这该帐号是客户端当前Window帐号。
myProxy.Credentials= System.Net.CredentialCache.DefaultCredentials;
注意第二种验证方式服务端和客户端在同一台机器时会出现一些权限问题,分开程序即可