如何在 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="&lt;IPAddress&gt;:&lt;Port&gt;:&lt;Hostname&gt;"

【讨论】:

我的路径其实是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 进行 SSL 连接/连接重置

带有自定义配置文件的 IISExpress 8 - Web 服务不会加载

使用 MVC 5 在 Localhost 上使用 IISExpress 的 Ajax POSTing 和 CORS 预检错误

IISExpress 从远程机器返回 503 错误

IISExpress 日志文件位置

如何在 localhost 的 80 端口上运行 laravel 5?