连接到Web服务时抛出异常

时间:2012-11-15 00:21:04

标签: c# .net web-services soap

我在从.NET Windows应用程序通过HTTPS消费java Web服务时遇到问题。 Web服务需要服务器身份验证,但是当我尝试调用任何方法时,我收到了follor错误:

  

HTTP请求未经授权使用客户端身份验证方案   '匿名'。从服务器收到的身份验证标头是   '基本领域=登录'。

我在Visual Studio中将Web服务添加为服务引用。这是我的应用配置:

<security>部分,我有这个:

<security mode="Transport">
  transport clientCredentialType="None" proxyCredentialType="None"
   realm="" />
   <message clientCredentialType="UserName" algorithmSuite="Default" />
 </security>

<httpsTransport>部分,我有这个:

<httpsTransport manualAddressing="false" maxBufferPoolSize="524288"
  maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
  bypassProxyOnLocal="false"
  hostNameComparisonMode="StrongWildcard" keepAliveEnabled="true"
  maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
  realm="" transferMode="Buffered" 
  unsafeConnectionNtlmAuthentication="false"
  useDefaultWebProxy="true" requireClientCertificate="false" />

我的代码看起来像这样:

ServiceReference1.servicePortTypeClient service = new ServiceReference1.servicePortTypeClient ("enpointbindingname"); 
service .ClientCredentials.UserName.UserName = "username";          
service .ClientCredentials.UserName.Password = "password";
service.method();

1 个答案:

答案 0 :(得分:3)

从服务器的响应来看,webservice看起来需要基本的http身份验证。这意味着在传输级别而不是消息级别进行身份验证。所以安全配置也许就是这样:

<security mode="Transport">
    <transport clientCredentialType="Basic" />
</security>

如果Web服务确实使用HTTPS进行基本身份验证,则this msdn page会详细描述此方案。