如何在 IISExpress 上使用带有 localhost 的子域?
Posted
技术标签:
【中文标题】如何在 IISExpress 上使用带有 localhost 的子域?【英文标题】:How to use subdomains with localhost on IISExpress? 【发布时间】:2013-11-15 19:14:32 【问题描述】:我现在通过 localhost:5252 在本地为我的 MVC 应用程序提供服务。
我正在尝试通过让 localhost 和 contoso.localhost 都指向我的 Web 应用程序实例来设置我的应用程序以测试多租户。
我用相应的条目设置了我的主机文件:
127.0.0.1 contoso.localhost
但是我不确定我还需要做什么才能完成这项工作。现在,当我导航时,我只是得到一个标准的 IIS8 页面,即使我没有在 IIS 管理器中做任何事情。
我试图避免在本地使用 IIS,因为一切都在使用 IISExpress。有什么简单的方法可以实现吗?
【问题讨论】:
Forms Authentication across Sub-Domains on local IIS 的可能重复项 【参考方案1】:这可以通过编辑 applicationHost.config 文件来完成
C:\Users\yourProfile\Documents\IISExpress\config\applicationHost.config
Visual Studio 通常会在您进行配置更改时为您处理编辑此文件,但您可以手动编辑。找到您正在使用的特定网站,以下绑定应该可以工作:
<bindings>
<binding protocol="http" bindingInformation="*:5252:localhost" />
<binding protocol="http" bindingInformation="*:5252:contoso.localhost" />
</bindings>
您真的可以将端口更改为您想要的任何内容,这样您就可以使用 80 来节省一些输入。继续添加绑定以根据需要填写您的多租户。
如果您正在寻找更多信息,我建议您查看Scott Hanselman's blog post on IIS Express & SSL.
更新
在 VS 2015 和 .NET 内核中,applicationHost.config 已移至基于目录的系统来存储配置,而不是全局配置文件。新位置与您的项目相关:
.vs\config\applicationHost.config
相同的编辑原则适用于该文件,但是当使用 TFS 源代码控制 VS 不编辑在分支之间更改时文件,就像它对全局文件所做的那样。
关于域的通配符注释,wildcarding hostname isn't supported 直到 IIS 10。因此,它可能在 IIS Express 10 中受支持,但之前可能不支持。
bindingInformation
的细分为:
bindingInformation="<IPAddress>:<Port>:<Hostname>"
【讨论】:
我的路径其实是C:\Users\myaccount\Documents\IISExpress
@beavel 我试过了,但我仍然收到 400 错误请求..有什么想法吗?
可以绑定*.localhost
吗?
请考虑您必须以管理员身份运行 Visual Studio,并且 .NET Core 项目中的配置文件地址更改为 '\your-Project-root\.vs\config\applicationhost.config'。
最初没有用。将 127.0.0.1 mysub.localhost 添加到 C:\Windows\System32\drivers\etc\hosts 文件似乎有帮助。【参考方案2】:
尝试检查项目 URL 的项目设置。
在解决方案资源管理器中右键单击您的项目 -> 属性 -> Web
在服务器下查找项目 URL。更新此值以反映您的子域 url,您应该一切顺利。
【讨论】:
我需要能够同时使用 localhost 和 contoso.localhost - 我看不到使用这种方法配置多个 URL 的方法。想法?以上是关于如何在 IISExpress 上使用带有 localhost 的子域?的主要内容,如果未能解决你的问题,请参考以下文章
带有自定义配置文件的 IISExpress 8 - Web 服务不会加载
使用 MVC 5 在 Localhost 上使用 IISExpress 的 Ajax POSTing 和 CORS 预检错误