使用 VS 2015 对子域进行本地调试
Local debugging of subdomains with VS 2015
我有一个多租户网站,它必须处理任何传入请求并确定 URL 子域的适当路由。
我使用 this 或类似的解决方案设置了子域路由。
但是我正在尝试使用子域(别名网站)在我的本地计算机上访问我的网站。我无法使用我指定的子域让我的本地 IIS 移植到我的网站。
我想在我的本地机器上提供一个虚拟域名,它将移植到我在 VS 上调试的网站 (localhost:23456
)。
我已经阅读了一些相同问题的答案(例如 this or this 一个),但看起来系统已经随着新的 IIS 和 Visual Studio 2015 和 ASP.NET 5 发生了变化MVC 6 (vNext) 项目配置。
这是我根据上面链接的答案尝试过的方法:
- 我尝试将
hosts
文件移植 www.myexample.com
设置为 127.0.0.1
但在我的浏览器中导航到 www.myexample.com:23456
时出现“错误请求”错误,无论如何调试器没有报告请求。
- 我尝试在 applicationhost.config 文件中设置
<binding protocol="http" bindingInformation=":23456:www.myexample.com" />
,使 IIS 引发错误“替换 主机名 与 localhost。任何其他 bindingInformation
未指定 localhost
因为网站引发 IIS 错误。
更新
之后
我知道 .vs 文件夹,那是我确实在配置绑定。
但是,看起来是导致 IIS 抛出错误的权限。
运行 netsh
命令解决了这个问题。顺便说一句,因为我只是 运行 我自己的机器,所以我不需要打开防火墙。
无论如何我的问题是是否有办法添加通配符而不是分别添加每个子域?由于每个租户都有一个唯一的子域,因此添加子域的整个过程本质上是动态的。我需要在所有 3 个地方都允许使用星号:
- 主机文件
- applicationhost.config 文件
- netsh 命令
看起来我可以在那些地方添加星号,但它实际上不起作用。
我猜你是在本地使用 IIS Express 吗?
如果是这样,在您的解决方案目录中,有一个 .vs
文件夹。您需要在该文件夹内的 \config\applicationhost.config
文件中添加绑定。然后确保您已允许 IIS express 侦听该子域。
你可以参考斯科特的article on how to configure IIS Express。专门寻找这一段“1。获取 IIS EXPRESS 以通过端口 80 进行外部服务”
更具体地说,您需要运行这些命令:
netsh http add urlacl url=http://{your-domain}:{custom-port}/ user=everyone
netsh firewall add portopening TCP {custom-port} IISExpressWeb enable ALL
我有一个多租户网站,它必须处理任何传入请求并确定 URL 子域的适当路由。
我使用 this 或类似的解决方案设置了子域路由。
但是我正在尝试使用子域(别名网站)在我的本地计算机上访问我的网站。我无法使用我指定的子域让我的本地 IIS 移植到我的网站。
我想在我的本地机器上提供一个虚拟域名,它将移植到我在 VS 上调试的网站 (localhost:23456
)。
我已经阅读了一些相同问题的答案(例如 this or this 一个),但看起来系统已经随着新的 IIS 和 Visual Studio 2015 和 ASP.NET 5 发生了变化MVC 6 (vNext) 项目配置。
这是我根据上面链接的答案尝试过的方法:
- 我尝试将
hosts
文件移植www.myexample.com
设置为127.0.0.1
但在我的浏览器中导航到www.myexample.com:23456
时出现“错误请求”错误,无论如何调试器没有报告请求。 - 我尝试在 applicationhost.config 文件中设置
<binding protocol="http" bindingInformation=":23456:www.myexample.com" />
,使 IIS 引发错误“替换 主机名 与 localhost。任何其他bindingInformation
未指定localhost
因为网站引发 IIS 错误。
更新
我知道 .vs 文件夹,那是我确实在配置绑定。
但是,看起来是导致 IIS 抛出错误的权限。
运行 netsh
命令解决了这个问题。顺便说一句,因为我只是 运行 我自己的机器,所以我不需要打开防火墙。
无论如何我的问题是是否有办法添加通配符而不是分别添加每个子域?由于每个租户都有一个唯一的子域,因此添加子域的整个过程本质上是动态的。我需要在所有 3 个地方都允许使用星号:
- 主机文件
- applicationhost.config 文件
- netsh 命令
看起来我可以在那些地方添加星号,但它实际上不起作用。
我猜你是在本地使用 IIS Express 吗?
如果是这样,在您的解决方案目录中,有一个 .vs
文件夹。您需要在该文件夹内的 \config\applicationhost.config
文件中添加绑定。然后确保您已允许 IIS express 侦听该子域。
你可以参考斯科特的article on how to configure IIS Express。专门寻找这一段“1。获取 IIS EXPRESS 以通过端口 80 进行外部服务”
更具体地说,您需要运行这些命令:
netsh http add urlacl url=http://{your-domain}:{custom-port}/ user=everyone
netsh firewall add portopening TCP {custom-port} IISExpressWeb enable ALL