使用VS 2015本地调试子域名

6
我有一个多租户网站,必须处理任何传入请求并通过URL子域确定适当的路由。 我使用这个或类似的解决方案设置了子域路由。 但是,我尝试使用别名网站和子域在本地计算机上访问我的网站。我无法将本地IIS连接到我指定的子域的网站端口。 我想在我的本地计算机上专用一个虚拟域名,该域名将连接到我在VS上调试的网站(localhost:23456)。 我阅读了一些相同问题(如这个这个), 但看起来随着新的IIS和Visual Studio 2015以及ASP.NET 5 MVC 6(vNext)项目配置,系统已经发生了变化。 以下是我根据上面链接的答案尝试过的内容: 1.我尝试设置hosts文件,将www.myexample.com端口映射到127.0.0.1,但在浏览器中导航到www.myexample.com:23456时,我得到一个"Bad request"错误,无论如何调试器都不会报告请求。 2.我尝试在applicationhost.config文件中设置<binding protocol="http" bindingInformation=":23456:www.myexample.com" />,这会导致IIS引发错误,提示"用localhost替换hostname。任何未指定localhost作为网站的bindingInformation都会引起IIS错误。" 更新: 根据opiants answer后, 我知道了.vs文件夹,那里我确实配置了绑定。 然而,看起来是权限导致IIS抛出了错误。 运行netsh命令解决了这个问题。顺便说一下,由于我只在自己的机器上运行它,我不需要打开防火墙。 无论如何,我的问题是是否有办法添加通配符,而不是单独添加每个子域?因为每个租户都会获得一个唯一的子域,添加子域的整个过程都将具有动态性质。我需要在以下所有3个位置允许星号: 1.hosts文件 2.applicationhost.config文件 3.netsh命令

看起来我可以在那些地方添加星号,但实际上它并不起作用。

1个回答

6

我猜您在本地使用的是IIS Express?

如果是这样,在您的解决方案目录中,有一个 .vs 文件夹。您需要在该文件夹内的 \config\applicationhost.config 文件中添加绑定。然后确保您已允许IIS Express监听该子域。

您可以参考Scott的文章以配置IIS Express。具体请查看这一段落 "1. GETTING IIS EXPRESS TO SERVE EXTERNALLY OVER PORT 80"

更具体地说,您需要运行以下命令:

netsh http add urlacl url=http://{your-domain}:{custom-port}/ user=everyone

netsh firewall add portopening TCP {custom-port} IISExpressWeb enable ALL


你可以添加通配符映射。<binding protocol="http" bindingInformation="*:23456:*" />netsh http add urlacl url=http://*:23456/ user=everyone正如你可能已经猜到的那样,这将匹配_每个_域名,并且如果没有将域名注册到DNS服务器,则必须为每个子域创建hosts文件中的映射。 - Dealdiane
我尝试仅为子域添加通配符,但无法使其正常工作。我错过了什么吗? - Shimmy Weitzhandler
1
你是指像 *.something.com 这样的吗?恐怕 IIS Express 不支持这个。 - Dealdiane
我想我必须创建一个外部进程,在每次添加/删除租户时手动设置三个阶段。你认为有更好的选择吗?在.NET Core / DNX中是否可能实现这一点? - Shimmy Weitzhandler
我不确定你想要实现什么,但是我认为你可以通过创建一个处理程序来匹配子域名和租户来使其动态化。 - Dealdiane
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,