0

c# を使用して 1 つの Web サービスを作成します。この記事で指定されている dll を使用して、応答を暗号化します。

http://highcoding.blogspot.in/

Web方法

[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 アプリケーションを使用して 1 つの 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 サービスに変更を加えるたびに再生成され、変更内容は失われます。

この状況を処理する最善の方法は、構成による構成 SOAP 拡張です。方法については、このリンクに従ってください。

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

于 2012-04-16T13:06:31.850 に答える