无法删除虚拟目录 (.NET MVC 5 + IIS Express)



在尝试http://localhost:12345重定向到http://localhost:12345/user/login,我创建了一个虚拟目录,现在我意识到它只是重新映射http://localhost:12345显示为http://localhost:12345/user/login而不是去那个观点本身。

所以我添加了一个虚拟目录,但在任何地方都找不到它来删除它(IISExpress/config文件、.NET项目文件、VS中项目的"属性"菜单)。我的理解是,单击"创建虚拟目录"会在IISExpress/config/redirection.xml文件中添加一个条目,但我在其中看不到任何虚拟目录,更不用说我创建的虚拟目录了。我还尝试从备份中恢复IISExpress/config/中的所有配置xml文件,但没有成功。我还在整个解决方案中搜索了"/user/login"。。我哪儿也找不到这本书的背景。

问题是我必须使用URLhttp://localhost:12345/user/login/user/login以访问/user/login处的登录页面(使用"属性路由")。我从RouteConfig和我使用它的控制器中删除了属性路由(并取消了这些控制器/区域的AreaRegistration.cs文件),现在我只能通过前缀/User/Login来访问/User/Login,所以问题不是属性路由。它必须是虚拟目录。

浏览到根目录时收到此信息http://localhost:12345-未找到视图"/user/login"或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置:/用户/登录名。因此,它肯定将localhost:12345/解释为localhost:12345/user/login/。。。

我在Windows Server 2016上使用完整的IIS,但它没有理由使用IIS而不是IIS Express。它被设置为在项目的属性中使用IIS Express。

编辑:这个问题通过TFS转移到了新安装的Windows和VS上,所以这个问题似乎在.NET项目本身。此外,问题仅限于/user/login页面,在另一个区域中,页面按预期加载,而不需要/user/loging前缀。但是,我在RouteConfig或WebConfig或其他任何地方都没有看到任何异常。。。无论如何,我回滚了变更集,一切都很好,所以这个问题在技术上已经"解决"了,但我仍然想知道是什么导致了新变更集中的"虚拟目录式"行为。

右键单击虚拟目录并选择"转换为应用程序"。

然后右键单击应用程序并选择"删除"。

在Visual Studio解决方案(而非项目)的.vs子目录中查找applicationhost.config。

<site name="ProjectName" id="3">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:UsersnnsourcereposSolutionProjectName" />
</application>
<application path="/user/login" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:UsersnnsourcereposSolutionProjectName" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:58262:localhost" />
<binding protocol="https" bindingInformation="*:44316:localhost" />
</bindings>
</site>

对我来说,我创建的虚拟目录在这里显示为一个新的<application>标记,而不是<virtualDirectory>。似乎删除了额外的应用程序标记。

最新更新