OwinStartup没有射击
我有OwinStartupconfiguration代码工作完美,然后停止工作。 不幸的是,我不确定我做了什么来使它停止工作,并且正在很难找出答案。
为了确保我已经涵盖了基本知识,我检查了一下,以确保我有
[assembly:OwinStartup(typeof(WebApplication.Startup))]
属性分配正确,并确保我没有一个appSetting为owin:AutomaticAppStartup设置为false,所以我做了一个设置为true是安全的,因为之前没有任何东西。
<add key="owin:AutomaticAppStartup" value="true" />
我也试过专门调用appSetting:
<add key="owin:appStartup" value="WebApplication.Startup" />
在停止工作之前,我将Microsoft.Owin.Security NuGet包升级到了2.0.2,所以我试着将它们恢复到2.0.1(这是一个痛苦),但是它没有改变任何东西。 我在该项目上安装了WebActivator,并使用它来引导其他的东西,但我已经在新的WebApplication模板上进行了testing,并且在那里工作,所以我不认为这是罪魁祸首。
我也尝试删除我的启动类,并使用Visual Studio添加一个新的使用添加新项目中的OWIN启动类types,并没有得到调用。 接下来我尝试添加第二个Startup类,因为我知道如果定义了多个OwinStartup属性,它会抛出一个exception,但是不会抛出任何exception。
不知道还有什么要尝试。 有什么想法吗?
更新
原来,当我用它删除未使用的引用时,Resharper删除了对Microsoft.Owin.Host.SystemWeb的引用。
确保在项目中安装了Microsoft.Owin.Host.SystemWeb
软件包。 在IIS托pipe应用程序中启动检测需要此包。 欲了解更多信息,你可以参考这篇文章。
讨论的原始问题的替代答案 – Owin“不开火”。 在我的情况下,我花了几个小时,认为它没有被解雇,因为无法设置断点。
在Visual Studio中debuggingOWIN启动时
-
IIS Express – 运行“F5”将破坏OWIN启动代码
-
IIS – 运行“F5” 不会中断,直到加载OWIN(和global.asax)代码。 如果你附加到W3P.exe,你将能够进入它。
我意识到你已经提到了这一点,但这是一个重要的事情来检查,有时候人们(像我一样)没有阅读整个问题,只是跳到答案…“对于从旧MVC版本升级的人 – 确保你没有
<add key="owin:AutomaticAppStartup" value="false" />
在你的web.config
,你甚至不知道。 它会压制调用启动
而是将其更改为true
<add key="owin:AutomaticAppStartup" value="true" />
某处沿线 – 当我升级到MVC 5时,这个增加了(实际上几乎是讽刺的是明天是一年前),直到今天,当我尝试使用它时,我甚至不知道owin
是什么。
如果您在Startup
类中debugging代码时遇到了问题,我也遇到了这个问题 – 或者我认为是。 代码被解雇了,但是我相信这是在debugging器连接之前发生的,所以你不能在代码上设置断点,看看发生了什么。
您可以通过在Startup
类的Configuration
方法中抛出一个exception来certificate这一点。
我有一个类似的问题,并清除临时ASP.NET文件修复它。 希望这有助于某人。
我有同样的问题。 Microsoft.Owin.Host.SystemWeb软件包已安装,但在安装过程中,由于某种原因,NuGet无法添加dll作为参考。 确保你的项目有这个参考。 如果没有,你可以尝试重新安装:
update-package Microsoft.Owin.Host.SystemWeb -reinstall
我有一个像下面的错误重新安装,但不知何故它的工作:
系统调用失败。 (从HRESULTexception:0x80010100(RPC_E_SYS_CALL_FAILED))
debugging技巧
如果debugging不起作用,请尝试使用IIS Express,或者尝试下面的方法来访问本地IIS
使用本地IIS
出于某种原因,此方法可以debugging此方法:
- 请求一个网页
- 附加到w3wp.exe进程
- 触摸web.config文件
- 请求一个网页
额外的提示
也许这样做会刷新caching:
-
在web.config中添加一个false值的optimizeCompilations属性
<compilation debug =“true”… optimizeCompilations =“false”>
-
运行网站
- 撤消web.config中的更改
在我的情况下,IIS应用程序池没有设置为v4。 这是V2。
将AppPool更改为v4,一切正常。
在我的情况下,我的网站的输出path被某人改变,IIS Express甚至不加载OWIN,并且安装类当然不会被击中。 将输出path设置为“bin”后,效果很好。
当我将Owin添加到现有的Web项目时,我遇到了同样的问题。 我最终发现问题是由于web.config文件中的以下内容。
<assemblies> <remove assembly="*" /> <add assembly="System.Web.Mvc" /> <add assembly="System.Web.WebPages" /> ... </assemblies>
删除汇编=“*”是造成这个问题。 当我删除这条线,欧文的启动代码运行。 我最终将其更改为以下,并完美运作
<assemblies> <remove assembly="*" /> <add assembly="Microsoft.Owin.Host.SystemWeb" /> <add assembly="System.Web.Mvc" /> <add assembly="System.Web.WebPages" /> <add assembly="System.Web.Helpers" /> ... </assemblies>
我在这篇文章中混淆了很多的build议。
我有以下,但仍不能在一个断点着陆。 抛出exceptioncertificate代码正在input。
<appSettings> ... <add key="owin:AutomaticAppStartup" value="true" /> <add key="owin:appStartup" value="SSOResource.Startup, SSOResource" /> ... </appSettings>
最后出于绝望,我看着project-> properties,然后在WEB部分我也检查了NATIVE CODEcheckbox(ASP.NET应该已经被选中)。
终于为我修好了
注意:我正在使用Visual Studio 2017 Professional。
在我的情况下,这个Microsoft.Owin.Host.SystemWeb软件包出现在项目中。
但是web.config中不存在两个标签。
<add key="owin:AutomaticAppStartup" value="true" /> <add key="owin:appStartup" value="namespace.className.methodName" />
添加后它工作顺利。
首先添加OWINauthentication类,然后在您的web.config中启用OWIN:AutomaticAppStartup键 现在它会开火