【发布时间】: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