我试图了解 IIS 如何知道如何启动我的 ASP.Net Web 应用程序到目前为止我的理解是,在创建 Web 应用程序时,我们创建了一个 Web.Config,它定义了 IIS 将如何启动它的进程
所以我们有一个网络配置
<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);
}
//...
}
由于 IIS 可以运行多个应用程序,例如 php、.net 等,IIS 如何从 Web Config 知道运行全局 Asax。
我的猜测是它从 web 配置中查找应用程序类型,然后搜索 WebApiHttpApplication,有没有人有关于这个过程的更多信息?
由于 IIS 可以运行多个应用程序,例如 php、.net 等,IIS 如何从 Web Config 知道运行全局 Asax。
我的猜测是它从 web 配置中查找应用程序类型,然后搜索 WebApiHttpApplication,有没有人有关于这个过程的更多信息?
据我所知,如果使用将请求发送到 IIS。
http.sys 处理完http 请求后,IIS 会将此请求移至w3wp.exe 进行处理。
由于 IIS 只能处理 htm 或 html 静态页面,因此 IIS 将使用 ISAPI 来处理 IIS 无法处理的页面。
ISAPI 是一种扩展处理程序,用于处理不同类型的页面,如 php、aspx、cshtml 或其他内容。
您可以从 IIS 管理器控制台处理程序映射图标中找到它。
图像如下:
IIS 将根据其扩展名将请求发送到正确的 http 处理程序。处理程序模块(例如 asp.net isapi)将加载 CLR 和 Web 应用程序(包括 globalasax)来处理请求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句