Visual Studio 2015 - 无法添加虚拟目录
Visual Studio 2015 - Adding virtual directory not possible
我们 运行 我们的一些站点作为 Visual Studio 中的网站项目。
我们最近升级到 VS2015。现在我们无法为新网站添加虚拟目录。
我们已经尝试过右键单击 "Add new virtual direcory" 并在出现错误消息的地方编辑项目文件夹中的 applicationhost.config。
这是 VS2015 的错误还是有创建目录的方法?在升级到 VS2015 之前已经 运行 在 IIS Express 上的项目没有问题。
PS:我知道线程 here 但它没有帮助。
IIS Express 的文件系统网站。
- 打开 VS2015(右键单击并 select 运行 以管理员身份)。
- 单击文件 > 新建 > 网站...
- 在“新建网站”对话框中,单击浏览... 按钮。
- Select 本地 IIS 在左窗格中。 select IIS Express 站点 在右窗格中。
- 顶部右侧有4个按钮。单击 创建新站点 按钮。
- 输入名称并单击 打开。这将 select Web 位置中的 HTTP。
- 单击“确定”。
- 然后关闭解决方案。
- 从 applicationhost.config 打开
用户\\Documents\IISExpress\config 文件夹。可以在记事本中打开。
- 在 sites 部分找到您的网站。并更改物理路径
里面(virtualDirectory path="/" physicalPath="C:\WebApp\WebSite1")。写入现有 Web 项目的路径。
- 保存并关闭 applicationhost.config 文件。
- 运行 VS2015(运行 作为管理员)。
- 单击文件 > 打开 > 网站...
- 在“打开网站”对话框中,select 左侧窗格中的本地 IIS。
- Select 您的站点位于 IIS Express 站点 下,然后单击 打开。
- 单击网站菜单和新建虚拟目录...
- 输入别名和文件夹路径,然后单击“确定”。
现在您可以毫无错误地创建它了。
替代方案,如果您有解决方案文件“.sln”,则按照以下步骤操作:
使用记事本打开解决方案文件。
查找以 Project("{
开头的行
例如:
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "WebProject1", ......
然后改成:
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "http://localhost:12345/WebProject1", ......
并添加新的属性
SlnRelativePath = "C:\WebProject1\"
在 ProjectSection(WebsiteProperties)
中
例如,ProjectSection 来自
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "WebProject1", "{6D411253-734E-401A-A049-9620FC55D4FB}"
ProjectSection(WebsiteProperties) = preProject
UseIISExpress = "true"
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
Debug.AspNetCompiler.VirtualPath = "/WebProject1"
Debug.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
Debug.AspNetCompiler.Updateable = "true"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.VirtualPath = "/WebProject1"
Release.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
Release.AspNetCompiler.Updateable = "true"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
最后变成这样:
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "http://localhost:12345/WebProject1", "{6D411253-734E-401A-A049-9620FC55D4FB}"
ProjectSection(WebsiteProperties) = preProject
UseIISExpress = "true"
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
Debug.AspNetCompiler.VirtualPath = "/WebProject1"
Debug.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
Debug.AspNetCompiler.Updateable = "true"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.VirtualPath = "/WebProject1"
Release.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
Release.AspNetCompiler.Updateable = "true"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
SlnRelativePath = "C:\WebProject1\"
EndProjectSection
EndProject
上面的答案都不适合我,我仍然不确定为什么会这样,但这是我所做的:
修改驻留在项目中的 Applicationhost.config 文件:
最初看起来像这样:
<site name="Website" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:51005:localhost" />
</bindings>
</site>
我必须添加另一个应用程序路径条目:
<application path="/mywebsite" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
</application>
所以它最终看起来像这样:
<site name="Website" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
</application>
<application path="/mywebsite" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:51005:localhost" />
</bindings>
</site>
类似于 WhizBang 的回答...
删除根项目文件夹中的文件(如果需要,请备份)
.vs\config\applicationhost.config
清空项目文件中的 IISUrl 标记(如果存在)
<IISUrl></IISUrl>
转到项目属性并再次尝试创建虚拟 url。
我们 运行 我们的一些站点作为 Visual Studio 中的网站项目。 我们最近升级到 VS2015。现在我们无法为新网站添加虚拟目录。
我们已经尝试过右键单击 "Add new virtual direcory" 并在出现错误消息的地方编辑项目文件夹中的 applicationhost.config。
这是 VS2015 的错误还是有创建目录的方法?在升级到 VS2015 之前已经 运行 在 IIS Express 上的项目没有问题。
PS:我知道线程 here 但它没有帮助。
IIS Express 的文件系统网站。
- 打开 VS2015(右键单击并 select 运行 以管理员身份)。
- 单击文件 > 新建 > 网站...
- 在“新建网站”对话框中,单击浏览... 按钮。
- Select 本地 IIS 在左窗格中。 select IIS Express 站点 在右窗格中。
- 顶部右侧有4个按钮。单击 创建新站点 按钮。
- 输入名称并单击 打开。这将 select Web 位置中的 HTTP。
- 单击“确定”。
- 然后关闭解决方案。
- 从 applicationhost.config 打开 用户\\Documents\IISExpress\config 文件夹。可以在记事本中打开。
- 在 sites 部分找到您的网站。并更改物理路径 里面(virtualDirectory path="/" physicalPath="C:\WebApp\WebSite1")。写入现有 Web 项目的路径。
- 保存并关闭 applicationhost.config 文件。
- 运行 VS2015(运行 作为管理员)。
- 单击文件 > 打开 > 网站...
- 在“打开网站”对话框中,select 左侧窗格中的本地 IIS。
- Select 您的站点位于 IIS Express 站点 下,然后单击 打开。
- 单击网站菜单和新建虚拟目录...
- 输入别名和文件夹路径,然后单击“确定”。
现在您可以毫无错误地创建它了。
替代方案,如果您有解决方案文件“.sln”,则按照以下步骤操作:
使用记事本打开解决方案文件。
查找以 Project("{
开头的行
例如:
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "WebProject1", ......
然后改成:
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "http://localhost:12345/WebProject1", ......
并添加新的属性
SlnRelativePath = "C:\WebProject1\"
在 ProjectSection(WebsiteProperties)
中例如,ProjectSection 来自
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "WebProject1", "{6D411253-734E-401A-A049-9620FC55D4FB}"
ProjectSection(WebsiteProperties) = preProject
UseIISExpress = "true"
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
Debug.AspNetCompiler.VirtualPath = "/WebProject1"
Debug.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
Debug.AspNetCompiler.Updateable = "true"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.VirtualPath = "/WebProject1"
Release.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
Release.AspNetCompiler.Updateable = "true"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
最后变成这样:
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "http://localhost:12345/WebProject1", "{6D411253-734E-401A-A049-9620FC55D4FB}"
ProjectSection(WebsiteProperties) = preProject
UseIISExpress = "true"
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
Debug.AspNetCompiler.VirtualPath = "/WebProject1"
Debug.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
Debug.AspNetCompiler.Updateable = "true"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.VirtualPath = "/WebProject1"
Release.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
Release.AspNetCompiler.Updateable = "true"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
SlnRelativePath = "C:\WebProject1\"
EndProjectSection
EndProject
上面的答案都不适合我,我仍然不确定为什么会这样,但这是我所做的:
修改驻留在项目中的 Applicationhost.config 文件:
最初看起来像这样:
<site name="Website" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:51005:localhost" />
</bindings>
</site>
我必须添加另一个应用程序路径条目:
<application path="/mywebsite" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
</application>
所以它最终看起来像这样:
<site name="Website" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
</application>
<application path="/mywebsite" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:51005:localhost" />
</bindings>
</site>
类似于 WhizBang 的回答...
删除根项目文件夹中的文件(如果需要,请备份)
.vs\config\applicationhost.config
清空项目文件中的 IISUrl 标记(如果存在)
<IISUrl></IISUrl>
转到项目属性并再次尝试创建虚拟 url。