2011-08-26 28 views
4

路由请求(这是cross-posted到ASP.NET表单),在“.cshtml”期末控制器

我工作的WebGit .NET项目,我们是接近‘1.0’版本。然而,我无法让我的“浏览”控制器(从而牵引出文件的存储库)服务行动“.cshtml”文件。

我本来用“的.config”和“的.cs”文件的麻烦为好,但我固定与此在web.config:

<location path="browse"> 
    <system.webServer> 
     <security> 
     <requestFiltering> 
      <fileExtensions allowUnlisted="true"> 
      <clear /> 
      </fileExtensions> 
      <hiddenSegments> 
      <clear /> 
      </hiddenSegments> 
     </requestFiltering> 
     </security> 
    </system.webServer> 
    </location> 

应该处理这个请求路由(其他已成功路由的所有内容):

routes.MapRoute(
    "View Blob", 
    "browse/{repo}/blob/{object}/{*path}", 
    new { controller = "Browse", action = "ViewBlob", path = UrlParameter.Optional }); 

现在,每当我尝试访问,在“.cshtml”结尾的URL,它提供了404,即使我的要求应该已经通过“浏览处理“控制器。我提供的文件不存在于磁盘上,而是作为blob从git存储库中提取。我试过的每一个其他文件扩展名都可以正常工作。

我怎样才能解决这个问题?


编辑:我曾尝试禁用网页像这样:

<appSettings> 
    <add key="webpages:Enabled" value="false" /> 
</appSettings> 

但似乎没有任何效果。

回答

6

作为一个快速的解决方法,你可以在你的应用程序的根了暂时的browse.cshtml文件,并把这个你的web.config中, 添加关键=“网页:启用”值=“假”

+0

你是怎么弄出来的? –

+0

通过WebMatrix的路由,, http://www.asp.net/webmatrix/tutorials/18-customizing-site-wide-behavior#Creating_More_Readable_and_Searchable_URLs –

+0

嗯,谢谢你这么多。这对我来说是完美的。 –

4

这是ASP.NET网页一个已知的bug,当你使用MVC 3,我不认为这是禁止这种行为的直接方式,也被隐式加载。唯一的解决方法是使用不同的扩展名(具体而言,未通过WebPageHttpHandler.GetRegisteredExtensions()列出的扩展名)

但是,这将在MVC 4中修复。抱歉给你带来不便。

+0

感谢信息。有没有一个错误跟踪器,这是注册? –

+0

嗯,这是在跟踪我们的内部bug跟踪系统 - 修复该问题在:)但是对于其他此类错误http://connect.microsoft.com或http://aspnet.codeplex.com已经检查的好地方。 – marcind

+0

伊姆兰有我选择的解决方案,实际上是为我工作。您可能想让其他客户知道有一种解决方法。 –