2

Web サービスを使用する .NET アプリケーションを作成しています。そのWebサービスへのリクエストで、接続httpヘッダーを「クローズ」に設定する必要があります。私はこれを1日グーグルで検索しましたが、何も機能しませんでした。

私の最善の努力は、GetWebRequest メソッドをオーバーライドしてヘッダーを追加しようとする以下のコードです。これは失敗しているように見えます-ブレークポイントを配置しましたが、アプリケーションを実行すると、ブレークポイントがヒットせず、接続ヘッダーが設定されていないように見えます(httpヘッダーを表示するのではなく、動作によって評価していますWeb 要求を処理するシステムの)。

いくつかの情報: Visual Studio を使用して Web 参照を追加したとき、ソリューション エクスプローラーでプロジェクトを右クリックし、[サービス参照の追加]、[詳細設定]、[Web 参照の追加] の順に選択しました。

namespace System.Net
{
    public class MyHttpProtocol : SoapHttpClientProtocol
    {
        protected override WebRequest GetWebRequest(Uri uri)
        {
            HttpWebRequest webRequest = (HttpWebRequest)base.GetWebRequest(uri);
            webRequest.Headers.Add("connection", "closed");
            return webRequest;
        }
    }
}
4

1 に答える 1

-1

IClientMessageInspector構築中のリクエストを変更するには、 を使用する必要があります。この質問は非常に似ており、答えが得られるはずです。

WCF の多くの作業には、ビヘイビアーを作成し、Web 構成でビヘイビアーを指定して、プロセスの特定の側面をオーバーライドすることが含まれます。これは少し面倒ですが、非常に強力です。そこにリクエストを追加できます。

編集してコメントに対処します。コードは次のようになりますか?

public object BeforeSendRequest(
    ref System.ServiceModel.Channels.Message request,
    System.ServiceModel.IClientChannel channel)
{
    var httpRequestMessage = new HttpRequestMessageProperty();
    httpRequestMessage.Headers.Add("connection", "closed");
    request.Properties.Add(
        HttpRequestMessageProperty.Name, httpRequestMessage);
    return null;
}
于 2013-06-21T15:10:57.887 に答える