Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC路由存在文件问题_C#_Asp.net Mvc 3 - Fatal编程技术网

C# ASP.NET MVC路由存在文件问题

C# ASP.NET MVC路由存在文件问题,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,在查看路由表之前,ASP.NET MVC 3似乎将首先为现有文件提供服务。通过设置选项routes.routeeExistingFiles=true,可以关闭此功能。当设置为不路由现有文件时,它似乎不会为所有文件提供服务。例如,如果文件名为*.cs,则不会提供服务。如果文件重命名为.txt,则将提供该文件。我觉得这相当武断,而且我还没有找到任何关于服务内容和未服务内容的文档。使用StaticFileRouteHandler类或类似的东西,将静态文件服务添加为路由表中的一个条目,应该会更好。有人有

在查看路由表之前,ASP.NET MVC 3似乎将首先为现有文件提供服务。通过设置选项
routes.routeeExistingFiles=true
,可以关闭此功能。当设置为不路由现有文件时,它似乎不会为所有文件提供服务。例如,如果文件名为*.cs,则不会提供服务。如果文件重命名为.txt,则将提供该文件。我觉得这相当武断,而且我还没有找到任何关于服务内容和未服务内容的文档。使用StaticFileRouteHandler类或类似的东西,将静态文件服务添加为路由表中的一个条目,应该会更好。有人有关于这个主题的更多信息或细节吗?我希望能够完全控制我的应用程序是否提供服务

我正在使用ASP.NET开发服务器

例如,如果文件名为*.cs,则不会提供服务

您可以查看
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.Config
文件的
部分。我的看起来像这样:

<httpHandlers>
    <add path="eurl.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" />
    <add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="True" />
    <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />
    <add verb="*" path="*_AppService.axd" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False" />
    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
    <add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" />
    <add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" />
    <add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" />
    <add path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False" />
    <add path="*.rem" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False" />
    <add path="*.soap" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False" />
    <add path="*.asax" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.master" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.skin" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.browser" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.sitemap" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.dll.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
    <add path="*.exe.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
    <add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.cs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.csproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.vb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.vbproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.webinfo" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.licx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.resx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.resources" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.mdb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.vjsproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.java" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.jsl" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.ldb" verb="*" type="System.Web.HttpForbiddenHandler"  validate="True" />
    <add path="*.ad" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.dd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.ldd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.sd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.cd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.adprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.lddprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.sdm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.sdmDocument" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.mdf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.ldf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.exclude" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.refresh" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
    <add path="*.rules" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
    <add path="*.xamlx" verb="*" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
    <add path="*.aspq" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*.cshtm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*.cshtml" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*.vbhtm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*.vbhtml" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="True" />
    <add path="*" verb="*" type="System.Web.HttpMethodNotAllowedHandler" validate="True" />
</httpHandlers>

所以你可以看到所有那些被禁止的扩展。它们对应于源代码文件,出于安全原因,不直接提供。否则人们将能够查看您的源代码文件

如果您想为它们服务,您可以编写一个控制器操作来为这些文件服务

例如,如果文件名为*.cs,则不会提供服务

您可以查看
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.Config
文件的
部分。我的看起来像这样:

<httpHandlers>
    <add path="eurl.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" />
    <add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="True" />
    <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />
    <add verb="*" path="*_AppService.axd" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False" />
    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
    <add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" />
    <add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" />
    <add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" />
    <add path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False" />
    <add path="*.rem" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False" />
    <add path="*.soap" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False" />
    <add path="*.asax" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.master" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.skin" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.browser" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.sitemap" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.dll.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
    <add path="*.exe.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
    <add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.cs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.csproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.vb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.vbproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.webinfo" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.licx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.resx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.resources" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.mdb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.vjsproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.java" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.jsl" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.ldb" verb="*" type="System.Web.HttpForbiddenHandler"  validate="True" />
    <add path="*.ad" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.dd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.ldd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.sd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.cd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.adprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.lddprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.sdm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.sdmDocument" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.mdf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.ldf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.exclude" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.refresh" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
    <add path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
    <add path="*.rules" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
    <add path="*.xamlx" verb="*" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
    <add path="*.aspq" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*.cshtm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*.cshtml" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*.vbhtm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*.vbhtml" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    <add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="True" />
    <add path="*" verb="*" type="System.Web.HttpMethodNotAllowedHandler" validate="True" />
</httpHandlers>

所以你可以看到所有那些被禁止的扩展。它们对应于源代码文件,出于安全原因,不直接提供。否则人们将能够查看您的源代码文件


如果您想为它们提供服务,您可以编写一个控制器操作来为这些文件提供服务。

我想说的是,IIS控制所提供的文件以及MVC路由表条目的指令

如果要提供.CS文件,可能需要调整IIS中的MIME类型


尝试添加.cs扩展名mime类型,并将文件类型设置为text/cs。

我想说的是,IIS控制提供的文件以及MVC路由表条目的指令

如果要提供.CS文件,可能需要调整IIS中的MIME类型


尝试添加.cs扩展名mime类型,并使文件类型为text/cs。

这是正确的。提供的文件类型有限制。除非您在IIS中另有指定,否则cs文件绝对在限制列表中。在本例中我没有使用IIS,我想知道这是从哪里获取的。事实证明它来自.NET Framework文件夹中的web.config。这是正确的。提供的文件类型有限制。除非您在IIS中另有指定,否则cs文件绝对在限制列表中。在本例中我没有使用IIS,我想知道这是从哪里获取的。原来它来自.NET Framework文件夹中的web.config。