Wan*_*hir 5 asp.net iis asp.net-mvc owin
我一直在浏览和谷歌搜索OWIN之类的东西如何挂钩ASP.NET活动.
我知道如果我们创建一个自托管的OWIN,我们将手动调用它,很明显我们正在调用OWIN使其开始运行.
但是,我发现在ASP.NET启动时自动调用OWIN而无需调用webapp start或其他任何东西.OWIN只是挂钩进入ASP.NET并在每个请求上充当拦截器.
我的例子是signalr,我们在OWIN配置方法中调用signalr的映射.但是,我没有看到任何可能调用OWIN配置方法的东西.但是信号器已经映射并且有效.
OWIN如何挂钩ASP.NET活动?是OWIN注册了现在认可OWIN并自动调用的钩子或ASP.NET吗?
您的项目中将有类似这样的一行:
[assembly: OwinStartup(typeof(MyApp.Security.Authentication.Startup))]
Run Code Online (Sandbox Code Playgroud)
上面的行通知 .NET 将在开始时调用的类和方法。
或者,您可以在 WebConfig 中配置启动
<appSettings>
...
<add key="owin:appStartup" value="MyApp.Security.Authentication.Startup" />
...
</appSettings>
Run Code Online (Sandbox Code Playgroud)
从那时起,您可以放置 OWIN 组件,以及通常放置在 Global.asax Application_Start 事件处理程序中的所有配置项。
删除 Global.asax 类: 如果您使用 OWIN,则无需使用 Gobal.asax 类并触发 Application_Start 事件,因此您可以将其删除。
Startup.cs 的代码示例
using System.Web.Http;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(MyApp.Security.Authentication.Startup))]
namespace MyApp.Security.Authentication
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
OWIN 使用启动类,您可以在其中指定希望包含在应用程序管道中的组件。如果您查看Katana 源代码,Katana SystemWeb 主机使用PreApplicationStartMethodAttribute来挂钩应用程序启动。.NET 4 中引入的 PreApplicationStartMethodAttribute 允许您在应用程序启动时在 ASP.NET 管道中尽早运行代码。我的意思是很早,甚至在 Application_Start 之前。
检查此链接中的“Owin 启动类检测”部分以及有关 PreApplicationStartMethodAttribute 的此链接。
| 归档时间: |
|
| 查看次数: |
3344 次 |
| 最近记录: |