当自托管究竟导致AddressAccessDeniedException时:HTTP无法注册URL

Geo*_*uer 5 windows acl firewall self-hosting owin

我正在为一个组件编写bdd测试,该组件将启动phantomjs并在我的站点上点击特定路由并对其进行处理.因为该组件基本上是关于幻像实例的自动化,所以无法轻易地删除http请求.

所以我想要一个自托管的端点,它将存根我想要的数据.因为这是一个单元测试,我认为它对于它独立运行非常重要,所以我做了类似这样的事情:

   async Task can_render_html_for_slide_async() {
        var config = new HttpSelfHostConfiguration("http://localhost:54331");
        config.Routes.MapHttpRoute("Controller", "{controller}", new {});
        using (var server = new HttpSelfHostServer(config)) {
            server.OpenAsync().Wait();
            var client = new HttpClient();
            var resp = await client.GetStringAsync(config.BaseAddress+"/Stub");
            Console.WriteLine(resp);
        }
    }

public class StubController : ApiController
{
    public string Get() {
        return "Booyah";
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个得到了我

AddressAccessDeniedException : HTTP could not register URL http://+:54331/
Run Code Online (Sandbox Code Playgroud)

我知道netsh或Admin模式是必需的,但我不明白为什么.例如,Nodejs在Windows上运行得很好但没有这样的要求.

同样使用OWIN直接不需要netshing.发生什么了?