HttpAuth与C#SoapClient

时间:2009-09-29 11:06:24

标签: c# web-services

我想知道如何在C#SoapClient(WebService代理)上应用HttpAuth。

我已经google了很多,你可以设置Credentials属性(应用NetworkCredentials对象)。但我似乎无法在这个对象上找到这个属性..

任何帮助都会很棒,

//罗宾

1 个答案:

答案 0 :(得分:0)

罗宾,

第一步是使用SDK命令行为您的Web服务实际生成代理类。这可以通过打开命令窗口并输入wsdl /out:myProxyClass.cs http://hostServer/WebserviceRoot/WebServiceName.asmx?WSDL来完成。

如果你已经这样做了,那么你就领先一步了。接下来,您需要将新创建的.cs添加到项目中。通常,我建议您创建一个clientconfig类或类似的东西,以允许您访问通过Web服务可用的方法。例如:

 public class WSClientConfig
 {

    public string endpoint = "";

    public string username = "";

    public string password = "";

    public PurgeFilesServiceWse service;



    #region Constructor

public LLClientConfig(string endpoint, string username, string password)
{
      if (endpoint == null || username == null || password == null) 
      {
    Console.WriteLine("Usage: ENDPOINT, USERNAME, PASSWORD");
              Console.WriteLine("One of these usage items was NULL!");
    return ;
      }

        this.endpoint = endpoint;
        this.username = username;
        this.password = password;

   CreateService();
    }
    #endregion


    #region Class Methods
    /// <summary>
    /// Create the connection to the web service.
    /// </summary>
    protected void CreateService()
    {
        UsernameToken token = new UsernameToken(username, password,   PasswordOption.SendHashed);
        service = new PurgeFilesServiceWse();
        service.Url = endpoint;

        // Create a new policy.
        Policy webServiceClientPolicy = new Policy();

        // Specify that the policy uses the UsernameOverTransportAssertion turnkey security assertion.
        webServiceClientPolicy.Assertions.Add(new UsernameOverTransportAssertion());

        // Apply the policy to the SOAP message exchange.
        service.SetPolicy(webServiceClientPolicy);

        service.SetClientCredential(token);
    }
    #endregion
}

接下来,您将创建此类的实例,并且可以根据需要传入您的Web凭据。 请记住这只是我所做的一个例子,您可能需要稍微调整一下以使用您的解决方案,但它应该保持非常相似我认为。

希望这有帮助!