【问题标题】:WebService RequestSoapContext property not found未找到 WebService RequestSoapContext 属性
【发布时间】:2015-07-31 05:42:27
【问题描述】:

我在 Visual Studio 2013 中有一个 asp.net 网站。我添加了一个网络服务。我需要将身份验证参数(用户名和密码)作为 SOAP 标头发送。但它找不到属性 RequestSoapContext。

我使用 Microsoft.Web.Services3 添加;在我的代码中。

CCWS.Service proxy = new CCWS.Service();
UsernameToken userToken = new UsernameToken("", "", PasswordOption.SendPlainText);
proxy.RequestSoapContext.Security.Tokens.Add(token);

一些论坛说要更改 reference.cs 文件中的引用类型。但我在我的解决方案中找不到任何这样的文件。 有人可以帮忙吗?

【问题讨论】:

    标签: c# asp.net web-services wse


    【解决方案1】:

    这个问题相当老了,但经过搜索,似乎解决方案是手动修改生成的代理代码以继承 Microsoft.Web.Services3.WebServicesClientProtocol 而不是 System.Web.Services.Protocols.SoapHttpClientProtocol

    【讨论】:

    • 这里是描述这一点的 Microsoft source。尤其重要的是:"...代理类默认派生自 SoapHttpClientProtocol。要使用 WSE 的功能,请将代理类派生的类更改为 WebServicesClientProtocol。"
    • Microsoft.Web.Services2.WebServicesClientProtocol 也适用于我,以防您无法添加 v3)
    【解决方案2】:

    使用 WseWsdl3.exe 生成代码 找到作为 wse 3.0 的一部分下载的 WseWsdl3.exe 并执行以下命令: C:\samples\wse>WseWsdl3.exe C:\samples\wse\us.wsdl /out:c:\samples\wse\myProxyClass.cs /protocol:SOAP /type:webClient

    我想这可能会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-01-26
      • 2013-10-13
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 2013-01-07
      相关资源
      最近更新 更多