问题描述
传统上我将自定义域用于我的localhost开发服务器。类似的东西:
dev.example.com
dev.api.example.com
在使用外部API(如Facebook)时,这为我提供了很大的灵活性。这在过去使用内置的Visual Studio开发服务器时效果很好,因为我需要做的就是为那些指向 127.0.0.1
的DNS记录添加一个CNAME。 / p>
但是我无法使用IIS Express。我尝试的一切似乎都失败了。我甚至已经为IIS Express的 applicationHost.config
文件添加了正确的XML配置,但它似乎没有认识到这些条目与真正安装的IIS一样有效。
< binding protocol =httpbindingInformation =*:1288:dev.example.com/>
每当我输入此行并尝试请求 http:// dev。 example.com:1288
我收到以下消息:
有人知道我是否遗漏了一些明显的东西吗?或者IIS Express团队是否真的缺乏远见才能看到这种类型的使用?
这对我有用(更新)对于VS 2013,请参阅2010年的修订历史记录, VS 2015 请参阅:):
- 右键单击您的Web应用程序项目▶
属性
▶Web
,然后配置服务器
部分,如下所示:
- 从下拉列表中选择
- 项目网址:
http:// localhost
- 覆盖应用程序根URL:
http://dev.example.com
- 单击(如果您在此处收到错误,则可能需要禁用IIS 5/6/7/8,更改IIS的
默认站点
除了端口:80
以外的所有内容,请确保等。)
- 可选:将
起始网址
设置为http://dev.example.com
-
打开
%USERPROFILE%\ My文件\ IISExpress\config\applicationhost.config
(Windows XP,Vista和7)并在< sites>
配置块中编辑网站定义,使其符合以下内容:< site name =DevExampleid =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
设置为Integrated选项之一(如Clr2IntegratedAppPool)。 - 打开并添加行
127.0.0.1 dev.example .com
。 - 您的申请!
评论提供了一些很好的建议:
Traditionally I use custom domains with my localhost development server. Something along the lines of:
dev.example.com
dev.api.example.com
This has provided me a ton of flexibility when working with external API's such as Facebook. This has worked great in the past with the built in Visual Studio Development Server, because all I needed to do was add a CNAME to those DNS records pointing to 127.0.0.1
.
However I have not been able to get this to work with IIS Express. Everything I have tried seems to have failed. I have even added the correct XML config to the applicationHost.config
file for IIS Express, but it doesn't seem to recognize the entries as valid as a true install of IIS would.
<binding protocol="http" bindingInformation="*:1288:dev.example.com" />
Whenever I enter this line and try to request http://dev.example.com:1288
I get the following message:
Does anybody know if I am missing something obvious? Or did the IIS Express team really lack the foresight to see this type of use?
This is what worked for me (Updated for VS 2013, see revision history for 2010, for VS 2015 see this: https://stackoverflow.com/a/32744234/218971):
- Right-click your Web Application Project ▶
Properties
▶Web
, then configure theServers
section as follows:- Select from the drop down
- Project Url:
http://localhost
- Override application root URL:
http://dev.example.com
- Click (if you get an error here you may need to disable IIS 5/6/7/8, change IIS's
Default Site
to anything but port:80
, make sure Skype isn't using port 80, etc.)
- Optionally: Set the
Start URL
tohttp://dev.example.com
Open
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(Windows XP, Vista, and 7) and edit the site definition in the<sites>
config block to be along the lines of the following:<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>
If running MVC: make sure the
applicationPool
is set to one of the "Integrated" options (like "Clr2IntegratedAppPool").- Open your
hosts
file and add the line127.0.0.1 dev.example.com
. - your application!
Some great advice from the comments:
这篇关于使用IIS Express自定义域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!