阻止Visual Studio 2013修改IISExpress的applicationHost.config文件

27
我有一个使用Visual Studio 2013的网站项目,每次打开它时,它都会在applicationHost.config中为网站项目添加一个新条目。我在开发中使用IISExpress,但我总是创建一个自定义入口以提供一些具体信息,并将其配置为使用端口80,因此我不希望Visual Studio对此文件进行任何修改。
我已经进入 工具 > 选项 > Web 项目,并取消选中“对Web站点和项目使用64位版本的IIS Express”,关闭了解决方案,从applicationHost.config中删除了该条目,并重新在Visual Studio中打开了项目,但它仍然继续向applicationHost.config中添加条目,并命名我的网站项目为该条目的名称。
有没有完全断开Visual Studio与IISExpress的方法?我喜欢使用它,但我想控制那个服务和配置。
6个回答

23

在站点部分的绑定部分中,除了本地主机版本之外,请创建一个新的绑定,如下所示:

 <bindings>
     <binding protocol="http" bindingInformation="*:21232:localhost" />
     <binding protocol="http" bindingInformation="*:21232:*" />
 </bindings>

在拥有这两条线路之后,VS停止了制作新的网站部分。


3
我想我已经追踪到了导致这个工作的原因。我的目标是使我的网站在本地网络上可访问,所以我会编辑<bindings>标签,将“\ :port:localhost”更改为“\ :port:”。Visual Studio在构建Web应用程序项目时搜索包含“:port:localhost”的项目名称绑定,如果找不到,则每次构建项目时都会添加一个新条目。您的更改使VS在重建后保持正确的设置。 - dhakim
这在vs2015中有效。继dhakim所说的,看起来它试图将绑定与属性下“Web”部分中的“项目URL”相匹配。 - bgura
1
你也帮了我不少!谢谢;-) - Yisroel M. Olewski

4

如何指定开发服务器端口

我刚试过上述 msdn 文章中描述的方法来更改 IIS express 使用的端口(虽然没有尝试80端口)。

  1. 在解决方案资源管理器中右键单击网站,选择删除(不会删除文件)
  2. 编辑 applicationHost.config 文件,更改绑定
  3. 在 Visual Studio 中“添加现有网站”(指向之前已删除站点的文件夹)

此时似乎不会在 applicationHost.config 中创建新条目,并使用新端口。


这似乎很有前途,但是每次我从MSDN文章中指定的“Local IIS”池中选择一个选项时,它都会尝试添加Id =“1”的站点,而不管我指定的是哪个。就像Visual Studio中的一个错误一样。可能是因为在<sites>元素中配置的所有站点都使用端口80,我不确定。此外,但我没有深入研究,如果网站处于源代码控制下(它确实是),则可能会出现问题,尝试重新添加它。 - Kyle B.
我在尝试时没有按照“本地IIS”选项卡的步骤进行操作。明确一下,我能够通过这种方式更改端口号,并且在applicationHost.config中没有创建新条目,但是我将端口设置为像55456这样的普通数字,而不是像80这样的特殊端口。当我尝试使用80时,出现了以下错误:打开网站http://localhost时出错。URL'http://localhost'的站点存在于本地IIS Web服务器和IIS Express Web服务器上。您需要编辑'applicationhost.config'文件以更改IIS Express正在使用的端口号。 - Anssssss
同样的问题。即使从文件系统中添加现有站点,它仍然尝试在applicationHost.config中添加Id="1"的站点记录,尽管明确给出了其他Web项目的路径(类似于Id="8")。我真诚地认为这不应该是预期的行为,并将向Microsoft提交错误报告。 - Kyle B.
https://connect.microsoft.com/VisualStudio/feedback/details/807429/adding-an-existing-website-to-a-solution-does-not-insert-the-correct-project-as-noted-in-the-file-path - Kyle B.

3
我们这里也遇到了同样的问题。两天Google寻求解决方案,但没有成功。目前唯一的解决方案是使用本地IIS选项将网站添加到解决方案中。

谢谢,这对我有用。我希望他们会修复它。 - timu

1
我在尝试使用VS2013时,从一个TFS工作区切换到另一个时遇到了麻烦。我在新的工作区中将VS2012更新为VS2013,然后在完成并提交更改后,我获取了原始工作区中的最新版本,并开始在其中使用VS2013。每次加载我的Web项目时,我都会收到关于它编辑我的项目文件的消息,每次都会出现问题。
以下是我解决它的方法,在尝试其他答案之后。一个坏的.csproj.user文件是问题所在。通常我不使用此文件,因为我已经勾选了“将服务器设置应用于所有用户(存储在项目文件中)”复选框。但我曾经使用过它。删除此文件或更新它以使其设置与我在项目文件中设置的设置匹配(例如设置端口,是否使用IISExpress等)即可解决问题。我现在可以加载我的项目,而不必每次加载时让Visual Studio对我的项目文件进行错误编辑。

我曾经遇到过同样的问题,即每次打开项目时VS都会不断重置SSL端口。最终发现是csproj.user文件中的设置导致了这个问题。我删除了该文件,问题得到了解决。 - Kevin Brady

0
在项目属性中,我看到一个名为“Web”的选项卡,其中包含一个“服务器”部分,其中有一个下拉菜单,您可以从以下选项中进行选择:
  • IIS Express
  • 本地IIS
  • 外部主机
我相信选择“本地IIS”是您需要的选项。

这是一个“网站”项目,而不是一个“Web 应用程序”项目。在项目属性中没有“Web”选项卡。我希望那会这么简单。 - Kyle B.

0

如果您不想使用本地开发服务器,您可以非常容易地附加到本地计算机上的 IIS 进程。

有一种方法可以在属性中设置调试的构建输出位置(在解决方案资源管理器中右键单击项目并选择“属性”)。如果您想在第一次轻松完成此操作而无需进行额外设置,请将调试构建的输出复制到您在 IIS 中配置的网站文件夹中。

接下来,确保您可以访问 IIS 站点。如果可以,请返回 Visual Studio 并转到“调试->附加到进程”菜单项。从列表中选择“w3wp.exe”(您可能需要检查“查看所有进程”)。现在,您应该能够在 VS 中触发断点。

但是,您还应该能够使用具有特定端口的 IIS Express,就像 @Anssssss 所说的那样。


我可以使用IIS,但这里的目标是尝试使用IISExpress。 - Kyle B.
1
你说“断开连接”,我理解为是“移除对IIS Express的依赖”。抱歉造成了混淆。 - ps2goat

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