Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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# 为什么webforms中故意不需要Routes.Ignoreroutes(“{resource}.axd/{*pathinfo}”)呢?_C#_Asp.net_Asp.net Mvc_Webforms - Fatal编程技术网

C# 为什么webforms中故意不需要Routes.Ignoreroutes(“{resource}.axd/{*pathinfo}”)呢?

C# 为什么webforms中故意不需要Routes.Ignoreroutes(“{resource}.axd/{*pathinfo}”)呢?,c#,asp.net,asp.net-mvc,webforms,C#,Asp.net,Asp.net Mvc,Webforms,故意添加到Routeconfig类中,以忽略MVC.NET中的scriptresource.axd或webresource.axd。但是为什么我们不需要网络表单中的这种声明呢。我知道我们可以把这样的陈述添加到 Routes.Ignoreroutes("{resource}.axd/{*pathinfo}") 但是我们不需要在Webforms中这样做。或者在webforms中添加这样的语句是一种好的做法 AXD文件不是真实文件(存在于物理上下文中),它们只是AssemblyResourc

故意添加到Routeconfig类中,以忽略MVC.NET中的scriptresource.axd或webresource.axd。但是为什么我们不需要网络表单中的这种声明呢。我知道我们可以把这样的陈述添加到

    Routes.Ignoreroutes("{resource}.axd/{*pathinfo}")

但是我们不需要在Webforms中这样做。或者在webforms中添加这样的语句是一种好的做法

AXD文件不是真实文件(存在于物理上下文中),它们只是
AssemblyResourceLoader
中注册的别名。默认情况下,ASP.NET在HTTP处理例程提供的内部上下文中使用
ScriptResource.axd
&
WebResource.axd

为防止将AXD请求(即对不存在文件的请求)传递给任何控制器,
RouteCollection.IgnoreRoute
将忽略指向这些AXD文件的任何请求,如本文所示:

如果您希望路由处理所有请求,甚至是该点的请求 对于文件,可以通过设置
RouteCollection
对象的
RouteExistingFiles
属性设置为true。 将此值设置为true时,所有与定义的 模式由路由处理

您还可以指定路由不应处理某些URL 请求。您可以通过以下方式阻止路由处理某些请求: 定义路线并指定
StopRoutingHandler
类 应用于处理该模式。当请求由
StopRoutingHandler
对象,则
StopRoutingHandler
对象会阻止任何 请求作为路由的附加处理。相反,请求 作为ASP.NET页面、Web服务或其他ASP.NET处理 终点

因此,如果有人请求,例如,
example.com/WebResource.axd?d=XXXXX&t=ZZZZZZ
,它可能会返回特定程序集文件中任何嵌入式资源的特定代码片段,这些代码片段仅由webforms使用,而不是在MVC中

如果您正在检查
%Windir%\Microsoft.NET\Framework\[版本号]\config
中的web.config文件,则存在
WebResource
和其他类似的AXD路径:

     void Application_Start(object sender, EventArgs e) 


问题是,您应该了解web表单。web表单中有页面生命周期,而mvc没有页面生命周期。它支持请求生命周期。这就是为什么它有路由,而网页没有路由。
<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" />
    ...
</httpHandlers>