【问题标题】:What does a Visual Studio 2013 Project makes it a katana Project?什么是 Visual Studio 2013 项目使其成为武士刀项目?
【发布时间】:2014-09-23 05:21:28
【问题描述】:

我刚刚开始努力理解 owin 和 katana。关注Asp.Net tutorial 我在 VS2013 中创建了一个空白的 asp.net 项目,并添加了一个 Nuget 包对Microsoft.Owin.Host.SystemWeb 的引用。我创建的项目如图所示是空白的。

除了AssemblyInfo.csWeb.configpackages.config 之外,什么都不包含。现在当我运行(F5)这个时,它说

  • 未找到包含 OwinStartupAttribute 的程序集。
  • 未找到包含 Startup 或 [AssemblyName].Startup 类的程序集。要禁用 OWIN 启动发现,请添加 appSetting owin:AutomaticAppStartup 在 web.config 中的值为“false”。 要指定 OWIN 启动程序集、类或方法,请添加 appSetting owin:AppStartup 具有完全限定的启动类或 web.config 中的配置方法名称。

现在的问题是,如何仅通过添加对 Microsoft.Owin.Host.SystemWeb 的 Nuget 引用,它开始寻找特定于 Owin 的内容,例如错误消息中指出的 Startup 类等等? 我的意思是我在没有那个 Nuget 引用的情况下运行了一个不同的项目,并且错误消息完全不同。通过添加 Nuget 引用,至少在 AssemblyInfo.csWeb.config 两个文件中似乎没有任何变化。据我了解,添加 Nuget 添加了 packages.config 文件并添加了一些项目参考。此外,我还逐个选项卡比较了两个项目的项目属性,但没有发现任何区别! 所以我想知道到底是什么导致 Owin 项目寻找 Startup 类?

【问题讨论】:

标签: asp.net visual-studio-2013 owin katana


【解决方案1】:

秘密在于,Katana 使用了一个名为 PreAppStart 的 ASP.NET 功能。您可以在此处查看源代码:

https://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Host.SystemWeb/PreApplicationStart.cs

如果 ASP.NET 应用程序中的程序集具有此程序集级属性:

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

然后 ASP.NET 将在应用程序启动时自动运行该代码。此代码将在“用户”代码运行之前运行,甚至在 Application_Start 事件之前运行。这就是为什么它被称为 PreAppStart。

对于 Katana,此代码动态注册一个 ASP.NET HTTP 模块 (IHttpModule),该模块最终将搜索并尝试调用应用程序的启动/构建器类。如果失败了,kablamo!

要禁用自动行为,请将此行添加到 web.config 的 <appSettings> 部分:

<add key="owin:AutomaticAppStartup " value="false" />

有关此行为的更多信息,请访问 www.asp.net 站点:http://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-class-detection(与评论者提到的相同)。

【讨论】:

  • 嗨,Eilon,我想我开始明白了。但现在的问题是是什么导致您提到的代码(PreApplicationStart 类中的静态方法)执行。甚至在那之前是什么导致该程序集加载?正如我提到的,除了项目参考之外,我没有对我的项目做任何事情。
  • 谢谢安德烈亚斯。相当复杂。
  • 我刚刚意识到这与“使 IIS 开始通过 Owin 管道响应请求的过程是什么?”相同。 (stackoverflow.com/questions/25294905/…)
  • @DumbDev 这确实是基本相同的问题和答案。
猜你喜欢
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2011-12-28
相关资源
最近更新 更多