问题 如何将用户凭据传递给Web服务?


我正在使用Windows应用程序中的WSDL来使用Web服务。当我尝试使用方法时,我收到以下错误: -

HTTP请求未经授权使用客户端身份验证方案   '匿名'。从服务器收到的身份验证标头是“”

{“远程服务器返回错误:(401)未经授权。”}

我有用户凭据但不知道如何使用Windows应用程序中的c#代码传递它。


12443
2018-06-10 20:11


起源

你是如何使用你的网络服务的? WCF? - Jay
wsdlsoap绑定...我猜。我正在从wsdl.xml文件中读取它。或者你的意思是我使用什么类型的应用程序来使用Web服务,然后使用它的Windows应用程序。 - user1327064


答案:


以下是它如何为我工作: -

配置文件设置如下所示: -

<configuration>
    <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="bindingName"  >
              <security mode="TransportCredentialOnly">
                <transport clientCredentialType="Basic" proxyCredentialType="None" realm=""/>
                <message clientCredentialType="UserName" algorithmSuite="Default"/>
              </security>
            </binding>

          </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://10.10.10.10:1880/testpad/services/Testwebservice"
                binding="basicHttpBinding" bindingConfiguration="bindingName"
                contract=testService.GetData" name="test_Port1" />
        </client>
    </system.serviceModel>
</configuration>

在这里,我传递用户凭据: -

 var ser = new GetDataClient();
 ser.ClientCredentials.UserName.UserName = "userid";
 ser.ClientCredentials.UserName.Password = "Pa$$word1";

12
2018-06-13 17:52





您可以尝试使用上述方法生成服务客户端代理 这里。获得WCF客户端代理的实例后,它将具有属性 ClientCreditials 你可以根据需要填写。 希望这可以帮助。


-1
2018-06-10 20:25