【问题标题】:How to pass user credentials to web service?如何将用户凭据传递给 Web 服务?
【发布时间】:2013-06-10 20:11:49
【问题描述】:

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

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

{"远程服务器返回错误:(401) Unauthorized."}

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

【问题讨论】:

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

标签: c# winforms web-services


【解决方案1】:

这是它对我的工作方式:-

配置文件设置如下:-

<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";

【讨论】:

  • 对我有用的是这个answer
【解决方案2】:

您可以尝试使用here 提到的方法生成您的服务客户端代理。一旦有了 WCF 客户端代理的实例,它就会有一个属性 ClientCreditials,您可以根据需要对其进行填充。 希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2018-03-09
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多