【问题标题】:Can't remove virtual directory (.NET MVC 5 + IIS Express)无法删除虚拟目录(.NET MVC 5 + IIS Express)
【发布时间】:2017-05-22 23:08:45
【问题描述】:

在尝试将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”的整个解决方案。我找不到任何地方的设置。

问题是我必须使用 URL http://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/...

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

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

【问题讨论】:

  • 据我了解,您希望您的解决方案不使用虚拟目录/url,对吗?
  • 正确,但(见编辑)它似乎只出现在项目本身的问题中,而不是在 IISExpress 中。
  • 在 cmd 中输入 inetmgr ,在 default sites 下,你可以找到你项目的虚拟目录。您可以删除虚拟目录,项目 URL 将恢复正常

标签: c# iis asp.net-mvc-5 directory virtual


【解决方案1】:

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

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

【讨论】:

  • 另外,如果这不起作用,只需右键单击虚拟目录,选择浏览,在 Windows 资源管理器中上一级,然后删除特定站点的文件夹(在默认文件夹中)。然后回到 IIS,右击,选择 Refresh。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
相关资源
最近更新 更多