传统上,我在本地主机开发服务器中使用自定义域。大致如下:
dev.example.com
dev.api.example.com
这为我在使用 Facebook 等外部 API 时提供了很大的灵活性。这在过去与内置的 Visual Studio 开发服务器配合使用非常有效,因为我所需要做的就是向那些指向
127.0.0.1
的 DNS 记录添加 CNAME。
但是,我无法让它与 IIS Express 一起工作。我所尝试的一切似乎都失败了。我什至已将正确的 XML 配置添加到 IIS Express 的
applicationHost.config
文件中,但它似乎无法像真正安装 IIS 那样识别这些条目。
<binding protocol="http" bindingInformation="*:1288:dev.example.com" />
每当我输入此行并尝试请求
http://dev.example.com:1288
时,我都会收到以下消息:
错误请求 - 主机名无效
有人知道我是否遗漏了一些明显的东西吗?还是 IIS Express 团队真的缺乏远见来看到这种类型的使用?
这对我有用(针对 VS 2013 进行了更新,请参阅 2010 年的修订历史记录,对于 VS 2015 请参阅:https://stackoverflow.com/a/32744234/218971):
右键单击您的 Web 应用程序项目 ▶
Properties
▶ Web
,然后配置 Servers
部分,如下所示:
http://localhost
http://dev.example.com
Default Site
更改为端口 :80
以外的任何内容,确保 Skype 未使用端口80等)可选:将
Start URL
设置为 http://dev.example.com
打开
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(Windows XP、Vista 和 7)并在 <sites>
配置块中编辑站点定义,使其符合以下内容:
<site name="DevExample" id="997005936">
<application path="/" applicationPool="Clr2IntegratedAppPool">
<virtualDirectory
path="/"
physicalPath="C:\path\to\application\root" />
</application>
<bindings>
<binding
protocol="http"
bindingInformation=":80:dev.example.com" />
</bindings>
<applicationDefaults applicationPool="Clr2IntegratedAppPool" />
</site>
如果运行 MVC:确保
applicationPool
设置为“集成”选项之一(如“Clr2IntegratedAppPool”)。
hosts
文件并添加行127.0.0.1 dev.example.com
。
► 开始您的申请!
评论中的一些很好的建议:
- 您可能需要以管理员身份运行 Visual Studio。
- 如果您想让其他开发人员看到您的 IIS 正在运行
netsh http add urlacl url=http://dev.example.com:80/ user=everyone
- 如果您希望站点解析所有主机集
。 使用任何你想要的端口,80 就很方便。要解析所有主机,您需要以管理员身份运行 Visual StudiobindingInformation="*:80:"
对于 Visual Studio 2015,上述答案中的步骤适用,但
applicationhost.config
文件位于新位置。在“解决方案”文件夹中遵循路径,如果您升级并且计算机上有两个版本的 applicationhost.config
,这会很混乱。
\.vs\config
在该文件夹中,您将看到您的 applicationhost.config 文件
或者,您可以在解决方案文件夹中搜索 .config 文件并以这种方式找到它。
我个人使用的是以下配置:
我的主机文件中包含以下内容:
127.0.0.1 jam.net
127.0.0.1 www.jam.net
我的 applicationhost.config 文件中包含以下内容:
<site name="JBN.Site" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Dev\Jam\shoppingcart\src\Web\JBN.Site" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:49707:" />
<binding protocol="http" bindingInformation="*:49707:localhost" />
</bindings>
</site>
记住以管理员身份运行 Visual Studio 2015 实例!如果你不想每次我推荐时都这样做:
我在尝试升级到 Visual Studio 2015 时遇到了问题,并意识到我的所有配置都没有被保留。
将 Visual Studio 2012 与 IIS Express 一起使用时,更改现有绑定不会永久有效。 (在你关闭 VS 之前它可能会起作用,但在那之后,事情就会变得非常混乱。)
关键是保留现有的本地主机绑定并在其后添加一个新的绑定。
netsh add urlacl
(授予自己以标准用户身份运行非本地主机站点的权限)。
如果要允许任意主机名,完整流程如下:
在管理员提示符下,运行以下命令(将 portnumber 替换为您在 #1 中计算出的端口号):
netsh http add urlacl url="http://*:portnumber/" user=everyone
netsh http add urlacl url="http://localhost:portnumber/" user=everyone
您还可以使用您的用户名 (DOMAIN\USER) 而不是所有人,以提高安全性。