我在Web解决方案中有多个项目,它们是OWIN启动和Global.asax启动的混合。 OWIN启动项目没有global.asax,反之亦然。今天我尝试通过将startup.cs添加到所有Global.asax启动项目并删除Global.asax来标准化解决方案。但是,我的新启动类项目都不会实际启动。
我试过了:
1)在Nuget中运行Install-Package Microsoft.Owin.Host.SystemWeb
2)将以下配置密钥添加到web.config:
<add key="owin:appStartup" value="namespace.Startup, assembly" />
<add key="owin:AutomaticAppStartup " value="true" />
3)删除临时ASP.NET文件(%temp%中的文件和C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319中的文件)
4)确保该类名为Startup
5)删除Startup类并通过选择Add - &gt;重新添加官方方式。新商品 - &gt; OWIN启动课程。
这在我的调试环境中的IISExpress中发生,我还没有在生产中尝试过。
我无法区分具有工作启动课程的项目与不具备工作启动课程的项目之间的区别。唯一的主要区别似乎是工作项目将net45而不是net46列为Owin和Microsoft.web.Infrastructure软件包的targetFramework,但我认为这不会产生影响。此外,工作项目已经安装了SignalR,而其他人则没有。
这些项目都是从一个带有Web API的空Web项目(没有MVC)开始的,但是我不记得我是否指定了哪些项目有OWIN启动。
答案 0 :(得分:2)
owin:appStartup
应位于appSettings
<appSettings>
<add key="owin:appStartup" value="NAMESPACE.Startup" />
</appSettings>
如果仍然无效,您可以尝试使用OwinStartup Attribute。
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(YOUR_PROJECT_NAMESPACE.Startup))]
namespace YOUR_PROJECT_NAMESPACE
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
}
}
}
注意:您不再需要在web.config中使用owin:appStartup
和owin:AutomaticAppStartup
。