gpt4 book ai didi

c# - 如何调用 OwinStartup 属性引用的类?

转载 作者:太空狗 更新时间:2023-10-29 22:30:59 24 4
gpt4 key购买 nike

如果添加属性,则在为 OWIN 添加 nuget 包之后:

[assembly: OwinStartup(typeof(MyProject.Startup))]

然后类MyProject.Startup的方法

public void Configuration(IAppBuilder app)

被调用。这个怎么称呼web.config 中对 OWIN 的唯一引用是程序集绑定(bind)重定向。在我的项目中没有其他对 http 模块的引用会导致识别此属性。如果我查看堆栈跟踪,我会看到以下行:

Microsoft.Owin.Host.SystemWeb.dll!Microsoft.Owin.Host.SystemWeb.OwinHttpModule.Init(System.Web.HttpApplication context) Unknown
System.Web.dll!System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(System.IntPtr appContext, System.Web.HttpContext context, System.Reflection.MethodInfo[] handlers) Unknown

这表明 OWIN 已注册为 IIS 的事件订阅,但这是如何发生的?这是否很难嵌入到它寻找程序集引用的框架中?

最佳答案

引入了 ASP.NET 4 PreApplicationStartMethodAttribute类(class)。此功能的主要用途是启用无法在 Application_Start 中完成的任务,因为为时已晚。例如,注册构建提供程序和添加程序集引用。因此,此属性允许在应用程序启动时在 ASP.NET 管道中尽早运行代码,甚至在 Application_Start 之前。

此属性的用途是:

[assembly: PreApplicationStartMethod(typeof(SomeClassLib.Initializer), "Initialize")]

第一个参数是类型,第二个参数是方法。该方法将是不带参数的 public static void 方法,如下面的代码:

public static class Initializer
{
public static void Initialize() {
// Whatever can we do here?
}
}

Katana source code使用 PreApplicationStartMethod 挂接到应用程序启动:

[assembly: PreApplicationStartMethod(typeof(PreApplicationStart), "Initialize")]

这表示将调用PreApplicationStart中的Initialize()方法:

public static class PreApplicationStart
{
private const string TraceName = "Microsoft.Owin.Host.SystemWeb.PreApplicationStart";

/// <summary>
/// Registers the OWIN request processing module.
/// </summary>
public static void Initialize()
{
try
{
if (OwinBuilder.IsAutomaticAppStartupEnabled)
{
HttpApplication.RegisterModule(typeof(OwinHttpModule));
}
}
catch (Exception exception1)
{
Exception exception = exception1;
ITrace trace = TraceFactory.Create("Microsoft.Owin.Host.SystemWeb.PreApplicationStart");
trace.WriteError(Resources.Trace_RegisterModuleException, exception);
throw;
}
}
}

行内

HttpApplication.RegisterModule(typeof(OwinHttpModule));

OwinHttpModule 接管并进入 OwinBuilder 和 OwinAppContext 流程,它在您的程序集中查找 Startup 类以调用 Configuration 方法。

关于c# - 如何调用 OwinStartup 属性引用的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25614794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com