加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 当自托管究竟导致AddressAccessDeniedException时:H

发布时间:2020-12-14 01:53:42 所属栏目:Windows 来源:网络整理
导读:我正在为一个组件编写bdd测试,该组件将启动phantomjs并在我的站点上点击特定路由并对其进行处理.因为该组件基本上是关于幻像实例的自动化,所以无法轻易地删除http请求. 所以我想要一个自托管的端点,它将存根我想要的数据.因为这是一个单元测试,我认为它对于
我正在为一个组件编写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";
    }
}

哪个得到了我

AddressAccessDeniedException : HTTP could not register URL http://+:54331/

I understand that netsh or Admin mode is required for this但我不明白为什么.例如,Nodejs在Windows上运行得很好但没有这样的要求.

using OWIN directly也不需要netshing.发生什么了?

解决方法

我写了一篇关于 it on codeproject的文章,这样做是为了让多个应用程序共享同一个端口成为可能.
您可以同时拥有IIS和Apache(或者在您的情况下为OWIN)侦听端口80.由于URL的路径,路由到正确的应用程序.
IIS和Apache都会使用这个驱动程序(http.sys).但是你需要获得“保留”路径的许可.
管理员始终获得授权.对于其他用户,请使用netsh或我的GUI工具 HttpSysManager来设置ACL.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读