Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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# IIS如何知道如何启动.NET Web应用程序_C#_Asp.net_Iis - Fatal编程技术网

C# IIS如何知道如何启动.NET Web应用程序

C# IIS如何知道如何启动.NET Web应用程序,c#,asp.net,iis,C#,Asp.net,Iis,我试图理解IIS是如何知道如何启动我的ASP.Net Web应用程序的。到目前为止,我的理解是,在创建Web应用程序时,我们创建一个Web.Config,它定义了IIS将如何启动它的进程 所以我们有一个Web配置 <system.webServer> <modules runAllManagedModulesForAllRequests="true"> <add name="LogRequests" type="BDBPayroll.Apps.API.W

我试图理解IIS是如何知道如何启动我的ASP.Net Web应用程序的。到目前为止,我的理解是,在创建Web应用程序时,我们创建一个Web.Config,它定义了IIS将如何启动它的进程

所以我们有一个Web配置

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <add name="LogRequests" type="BDBPayroll.Apps.API.Web.Shared.HttpModules.LogRequestsHttpModule, BDBPayroll.Apps.API.Web.Shared" />
    <add name="MiniProfiler" type="BDBPayroll.Apps.API.Web.Shared.HttpModules.MiniProfilerHttpModule, BDBPayroll.Apps.API.Web.Shared" />
  </modules>
  <handlers>
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    <remove name="OPTIONSVerbHandler" />
    <remove name="TRACEVerbHandler" />
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  </handlers>
</system.webServer>

以及全球Asax:

public class WebApiApplication : WebApiHttpApplication<WebModule>
{
    protected override void Configure(HttpConfiguration config)
    {
        config.Filters.Add(new Filters.ContextResolverFilter());
        config.Filters.Add(new ValidateModelAttribute());
        config.Filters.Add(new PaginationFilter());

        GlobalContext<JsonFormatterRule>.Instance.SetDefaultJsonFormatter(config);


    }
    //...
}
公共类webapitapplication:webapittpapplication
{
受保护的覆盖无效配置(HttpConfiguration配置)
{
config.Filters.Add(newfilters.ContextResolverFilter());
添加(新的ValidateModelAttribute());
添加(新的PaginationFilter());
GlobalContext.Instance.SetDefaultJsonFormatter(配置);
}
//...
}
由于IIS可以运行多个应用程序,例如php、.net等,IIS如何从Web配置中知道如何运行全局Asax

我的猜测是,它从web配置中查找应用程序类型,然后搜索WebApiHttpApplication,有人知道关于这个过程的更多信息吗

由于IIS可以运行多个应用程序,例如php、.net等,IIS如何从Web配置中知道如何运行全局Asax

我的猜测是,它从web配置中查找应用程序类型,然后搜索WebApiHttpApplication,有人知道关于这个过程的更多信息吗

据我所知,如果使用,请向IIS发送请求

通过http.sys处理http请求后,IIS将此请求移动到w3wp.exe以进行处理

由于IIS只能处理htm或html静态页面,IIS将使用ISAPI处理IIS无法处理的页面

ISAPI是一种扩展处理程序,用于处理不同类型的页面,如php、aspx、cshtml或其他

您可以从IIS管理器控制台处理程序映射图标中找到它

图片如下:


IIS将根据其扩展名将请求发送到右侧http hanlder。处理程序模块(例如asp.net isapi)将加载CLR和web应用程序(包括Globalax)来处理请求。

IIS具有额外的asp.net集成,这在web.config中没有提到。该模块加载CLR和您的ASP.NET web应用程序,谢谢,所以您说全局asax的主要逻辑是隐藏的