2

我有一个自托管服务,需要监听来自 BITS 服务器的上传通知(它们是带有自定义标头的简单 HTTP POST 请求)。如果我不是自托管我的服务并且使用 IIS,我只会制作一个 ASPX 页面,我可以处理传入的请求,但我使用的是自托管 WCF,我无法切换到 IIS。

我考虑使用WebInvokeAttribute,但这似乎仅用于发送 JSON 或 XML 作为回复,我需要遵循协议规范。我也没有看到拉出自定义标题的方法。

我查看的下一件事是HttpListener,它似乎可以满足我的需要,但是我没有看到是否有办法通过我的 app.config 文件来配置它,就像普通的 WCF 端点一样。

我只是将地址添加到我的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 回答