Asp.net mvc 如何使用通配符映射防止IIS 6.0上的ASP.NET MVC部署尝试处理隐藏的共享连接?

Asp.net mvc 如何使用通配符映射防止IIS 6.0上的ASP.NET MVC部署尝试处理隐藏的共享连接?,asp.net-mvc,iis-6,Asp.net Mvc,Iis 6,如标题所述,配置ASP.NET MVC应用程序的IIS 6.0部署以忽略到隐藏共享的连接的最佳方法是什么?所讨论的应用程序使用通配符映射来允许干净的URL,因为我们计划在不久的将来升级到IIS 7.0,并且我们还使用自定义库处理缓存和压缩问题,因此我们希望避免关闭通配符映射,除非绝对必要 下面是应用程序中的一个错误,为您提供一个我们看到的示例 -----------------------------------------------------------------------------

如标题所述,配置ASP.NET MVC应用程序的IIS 6.0部署以忽略到隐藏共享的连接的最佳方法是什么?所讨论的应用程序使用通配符映射来允许干净的URL,因为我们计划在不久的将来升级到IIS 7.0,并且我们还使用自定义库处理缓存和压缩问题,因此我们希望避免关闭通配符映射,除非绝对必要

下面是应用程序中的一个错误,为您提供一个我们看到的示例

-------------------------------------------------------------------------------- System.Web.HttpException -------------------------------------------------------------------------------- Time Stamp - 03 Mar 2010, 08:11:44 Path - N/A, Internal Server Operation Message - The controller for path '/C$' could not be found or it does not implement IController. Target Site - System.Web.Mvc.IController GetControllerInstance(System.Type) Stack Trace - at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(Type controllerType) at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) at System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- System.Web.HttpException -------------------------------------------------------------------------------- 时间戳-2010年3月3日,08:11:44 路径-不适用,内部服务器操作 消息-找不到路径“/C$”的控制器,或者它未实现IController。 目标站点-System.Web.Mvc.IController GetControllerInstance(System.Type) 堆栈跟踪- 位于System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(类型controllerType) 位于System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext RequestContext,String controllerName) 在System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase-httpContext)中 位于System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext-HttpContext) 位于System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext-HttpContext) 在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()中 在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成) --------------------------------------------------------------------------------
我假设您的虚拟目录下有一个隐藏文件夹,这是正确的吗

如果是这样,隐藏文件夹仍应显示在IIS中。您需要将文件夹伪造为虚拟目录,这样您就可以访问配置按钮并删除通配符映射。然后将文件夹作为虚拟目录删除。

添加到配置中

<location path="HiddenFolder">
  <system.web> 
    <authorization>
      <deny users="*" />
    </authorization>
   </system.web>
</location>

它不是虚拟目录下的隐藏文件夹,而是通过\\server\c通过Windows资源管理器访问的标准Windows管理共享$
routes.IgnoreRoute("[HiddenFolder]");