0

DelegatingChannel (MessageHandler) を使用して受信メッセージを復号化し、送信メッセージを暗号化しようとしています。コードは次のようになりますが、いくつかのプレースホルダーを使用すると、達成する方法がわかりませんでした。

    protected override Task<HttpResponseMessage> SendAsync(
    HttpRequestMessage request, CancellationToken cancellationToken)
{
    var inEncryptedMessage = request.Content.ReadAsOrDefault<EncryptedMessage>();

    Message inMessage = inEncryptedMessage.Decrypt();

    var newContent = new StringContent(inMessage.Data, Encoding.UTF8, "text/json");

    newContent.Headers.ContentType = request.Content.Headers.ContentType;

    request.Content = newContent;            

    return base.SendAsync(request, cancellationToken).ContinueWith(
        task =>
        {
            HttpResponseMessage response = task.Result;

            // need to serialize the data in response.Content as json
            var outMessage = new Message {
                Data = ... // but don't know how
            };

            var outEncryptedMessage = outMessage.Encrypt();

            response.Content = new ObjectContent(outEncryptedMessage);

            return response;
        });
}



public class Message
{
    public string Data { get; set; }
}

public class EncryptedMessage
{
    public byte[] Key { get; set; }
    public byte[] Message { get; set; }
}

リクエストでJSON文字列を操作に渡し、そこでJSONをオブジェクトに逆シリアル化したいです。しかし失敗しました...しかし、オブジェクトは作成されましたが、すべてのプロパティがnullです。

そのため、応答の側面について考えるのをやめました。しかし、response.Content からのオブジェクトの読み取りにはまだ問題があります。

答えがあれば何かアドバイスをお願いします。

どうもありがとう、M

4

1 に答える 1

0

私が間違っていなければ、 DecryptOperationHandler を実装してみてください: HttpOperationHandler<HttpRequestMessage>, <HttpRequestMessage>

これにより、受信メッセージをリソース自体に渡す前に復号化する必要があります

暗号化は、リソース メソッドが実行された後に実行される EncryptOperationHandler : HttpOperationHandler<HttpResponseMessage>, <HttpResponseMessage> を使用して実行できます。

于 2011-07-27T18:59:48.233 に答える