(这是ASP.NET表单的cross-posted)
我正在研究WebGit .NET项目,我们接近“1.0”版本。但是,我无法使用“浏览”控制器(将文件从存储库中取出)来提供“.cshtml”文件。
我最初也遇到了“.config”和“。cc”文件的问题,但是我在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>
但这似乎没有效果。
答案 0 :(得分:6)
作为一种快速解决方法,您可以在应用程序根目录中放置一个临时的browse.cshtml文件,并将其放在您的web.config中, add key =“webpages:Enabled”value =“false”
答案 1 :(得分:4)
这是ASP.NET WebPages中的已知错误,当您使用MVC 3时会隐式加载。我不认为有一种直接的方法可以禁用此行为。唯一的解决方法是使用不同的扩展名(特别是未通过WebPageHttpHandler.GetRegisteredExtensions()列出的扩展名)
然而,这将在MVC 4中修复。很抱歉给您带来不便。