2

BITS サーバーからのアップロード通知をリッスンする必要がある自己ホスト型サービスがあります(カスタム ヘッダーを使用した単純な HTTP POST 要求です)。サービスを自己ホストしておらず、IIS を使用していた場合、ASPX ページを作成するだけで着信要求を処理できますが、自己ホスト型 WCF を使用しているため IIS に切り替えることができません。

私はWebInvokeAttributeの使用を調べましたが、それは JSON または XML を返信として送信するためだけのようで、プロトコル仕様に従う必要があります。また、カスタム ヘッダーを引き出す方法もわかりませんでした。

次に調べたのはHttpListenerで、必要なことを実行しているように見えますが、通常の WCF エンドポイントのように app.config ファイルを介して構成する方法があるかどうかはわかりませんでした。

アドレスを自分のapplicationSettingsセクションに追加するだけですか、それとも私がやろうとしていることを達成するためのより良い方法はありますか?

4

1 に答える 1

2

Properties クラスを使用して、そこに URL を保存するだけになりました。

//This is run on it's own thread
HttpListener listener = new HttpListener();
listener.Prefixes.Add(Properties.Settings.Default.BitsReplierAddress);
listener.Start();

while (_running)
{
    // Note: The GetContext method blocks while waiting for a request. 
    // Could be done with BeginGetContext but I was having trouble 
    // cleanly shutting down
    HttpListenerContext context = listener.GetContext();
    HttpListenerRequest request = context.Request;

    var requestUrl = request.Headers["BITS-Original-Request-URL"];
    var requestDatafileName = request.Headers["BITS-Request-DataFile-Name"];

    //(Snip...) Deal with the file that was uploaded
}

listener.Stop();
于 2012-11-12T20:58:12.573 に答える