无法删除虚拟目录(.NET MVC 5 + IIS Express)
Can't remove virtual directory (.NET MVC 5 + IIS Express)
试图拥有 http://localhost:12345 redirect to http://localhost:12345/user/login, I created a virtual directory, which I now realize just remaps http://localhost:12345 to show as http://localhost:12345/user/login 而不是去那个视图本身。
所以我添加了一个虚拟目录,但无法在任何地方找到它以将其删除(IISExpress/config 文件、.NET 项目文件、VS 中项目的属性菜单)。我的理解是单击 "Create Virtual Directory" 会向 IISExpress/config/redirection.xml 文件添加一个条目,但我没有在其中看到任何虚拟目录,更不用说我创建的目录了。我还尝试从备份中恢复 IISExpress/config/ 中的所有配置 xml 文件,但无济于事。我还在整个解决方案中搜索了“/user/login”。我无法在任何地方找到它的设置位置。
问题是我必须使用 URL http://localhost:12345/user/login/user/login 才能到达 /user/login 的登录页面(使用属性路由)。我从 RouteConfig 和我使用它的控制器中删除了属性路由(并取消删除了 controllers/areas 的 AreaRegistration.cs 文件),现在我只能通过前缀 [=31] 到达 /User/Login =],所以问题不是属性路由。必须是那个虚拟目录。
我在浏览到根目录时收到此消息 http://localhost:12345 - 未找到视图“/user/login”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置:
/user/login。所以它肯定会将 localhost:12345/ 解释为 localhost:12345/user/login/...
我在 Windows Server 2016 上使用完整的 IIS,但没有理由使用 IIS 而不是 IIS Express。它设置为在项目的属性中使用 IIS Express。
编辑:问题通过 TFS 转移到 Windows 和 VS 的全新安装,因此问题似乎出在 .NET 项目本身。此外,问题仅存在于 /user/login 页面,在另一个区域中,页面按预期加载而无需 /user/login 前缀。但同样,我在 RouteConfig 或 WebConfig 或其他任何地方都没有看到任何异常......无论如何,我回滚了变更集并且一切都很好,所以问题在技术上 "solved",但我仍然想知道是什么导致了较新的变更集中的 "virtual directory-esque" 行为。
右键单击虚拟目录和select "Convert to Application"。
然后右键单击该应用程序并select "Remove"。
在 Visual Studio 解决方案(不是项目)的 .vs 子目录中找到 applicationhost.config。
<site name="ProjectName" id="3">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\nn\source\repos\Solution\ProjectName" />
</application>
<application path="/user/login" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\nn\source\repos\Solution\ProjectName" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:58262:localhost" />
<binding protocol="https" bindingInformation="*:44316:localhost" />
</bindings>
</site>
对我来说,我创建的虚拟目录在这里显示为新的 <application>
标记,而不是 <virtualDirectory>
。似乎删除额外的应用程序标签有效。
试图拥有 http://localhost:12345 redirect to http://localhost:12345/user/login, I created a virtual directory, which I now realize just remaps http://localhost:12345 to show as http://localhost:12345/user/login 而不是去那个视图本身。
所以我添加了一个虚拟目录,但无法在任何地方找到它以将其删除(IISExpress/config 文件、.NET 项目文件、VS 中项目的属性菜单)。我的理解是单击 "Create Virtual Directory" 会向 IISExpress/config/redirection.xml 文件添加一个条目,但我没有在其中看到任何虚拟目录,更不用说我创建的目录了。我还尝试从备份中恢复 IISExpress/config/ 中的所有配置 xml 文件,但无济于事。我还在整个解决方案中搜索了“/user/login”。我无法在任何地方找到它的设置位置。
问题是我必须使用 URL http://localhost:12345/user/login/user/login 才能到达 /user/login 的登录页面(使用属性路由)。我从 RouteConfig 和我使用它的控制器中删除了属性路由(并取消删除了 controllers/areas 的 AreaRegistration.cs 文件),现在我只能通过前缀 [=31] 到达 /User/Login =],所以问题不是属性路由。必须是那个虚拟目录。
我在浏览到根目录时收到此消息 http://localhost:12345 - 未找到视图“/user/login”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置: /user/login。所以它肯定会将 localhost:12345/ 解释为 localhost:12345/user/login/...
我在 Windows Server 2016 上使用完整的 IIS,但没有理由使用 IIS 而不是 IIS Express。它设置为在项目的属性中使用 IIS Express。
编辑:问题通过 TFS 转移到 Windows 和 VS 的全新安装,因此问题似乎出在 .NET 项目本身。此外,问题仅存在于 /user/login 页面,在另一个区域中,页面按预期加载而无需 /user/login 前缀。但同样,我在 RouteConfig 或 WebConfig 或其他任何地方都没有看到任何异常......无论如何,我回滚了变更集并且一切都很好,所以问题在技术上 "solved",但我仍然想知道是什么导致了较新的变更集中的 "virtual directory-esque" 行为。
右键单击虚拟目录和select "Convert to Application"。
然后右键单击该应用程序并select "Remove"。
在 Visual Studio 解决方案(不是项目)的 .vs 子目录中找到 applicationhost.config。
<site name="ProjectName" id="3">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\nn\source\repos\Solution\ProjectName" />
</application>
<application path="/user/login" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\nn\source\repos\Solution\ProjectName" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:58262:localhost" />
<binding protocol="https" bindingInformation="*:44316:localhost" />
</bindings>
</site>
对我来说,我创建的虚拟目录在这里显示为新的 <application>
标记,而不是 <virtualDirectory>
。似乎删除额外的应用程序标签有效。