0

我用c#创建了一个webservice。为了加密响应,使用本文中指定的dll

http://highcoding.blogspot.in/

网络方法

[WebMethod]
[EncryptionExtension(Decrypt = DecryptMode.None, Encrypt = EncryptMode.Response, Target = Target.Body)]
[TracingExtension(TracingMode = TracingMode.Response, MethodName = "HelloWorld")]
public string HelloWorld() {
    return "Hello World";
}

我使用 c# windows 应用程序创建了一个 web 服务客户端。

   ServiceReference1.ServiceSoapClient ob = new WindowsFormsApplication2.ServiceReference1.ServiceSoapClient();
        string st = ob.HelloWorld();

在这里我收到一个错误“预期来自命名空间'http://schemas.xmlsoap.org/soap/envelope/'的结束元素'Body'”

加密正在工作。但我尝试并无法找到在客户端解密数据的方法。有人知道如何在客户端处理这个吗?

4

1 回答 1

0

在您的代理客户端代码中,将“EncryptionExtension”属性添加到 HelloWorld 方法

[EncryptionExtension(Decrypt = DecryptMode.Response, Encrypt = EncryptMode.None, Target = Target.Body)]
public string HelloWorld()
{
    object[] results = this.Invoke("HelloWorld", new object[] { });
    return ((string)(results[0]));
}

请注意,此代理是自动生成的代码。每次您对 Web 服务进行更改时,它都会重新生成,而您的更改将会丢失。

处理这种情况的最佳方法是通过配置进行配置肥皂扩展。请按照此链接了解如何操作。

http://fluentbytes.com/applying-soap-extension-client-proxy-without-altering-generated-proxy-code/

于 2012-04-16T13:06:31.850 回答