2011-02-23 64 views
4

我在路径/Files/filename.txt中的磁盘上有一个文件,MVC路由系统在使用其路由逻辑(与控制器,动作...)之前检查文件是否存在。ASP.NET MVC路由:如何使用路由匹配单个文件夹的文件?

我想在匹配磁盘上的文件之前使用路由逻辑。

如果我设置“RouteExistingFiles = true”,它将总是使用路由匹配文件。我只想为特定文件夹的这种行为。

即使Files文件夹中的文件存在,也必须调用“FilesController”。基本上我想要“IgnoreRoute()”的相反行为。

我该如何做到这一点?

回答

0

你将不得不采取两个部分的方法来做到这一点。

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer> 

<location path="files"> 
    <system.web> 
      <authorization> 
       <deny users="*"/> 
      </authorization> 
    </system.web> 
</location> 
  1. 确保你在你的web.config runAllManagedModulesForAllRequests是真的为了使UrlAuthorizationModule为静态文件运行。
  2. 您将需要特别停止asp.net提供名为files的文件夹中的文件。您可以通过将位置条目添加到配置节点内的web.config中来完成此操作。这是特别告诉授权模块,无论用户是谁,他们都无法访问此文件夹。

完成此操作后,您的FilesController现在将负责为文件夹提供文件。