我在VS2013中有一个解决方案,具有以下设置:
两个项目都有一个默认URL指向他们的拥有 localhost:portX(我正在使用IIS Express),因此App.Web正在侦听localhost:2222并且APP.Web.API正在侦听在localhost:3333。
我设置了App.Web.API以使用OWIN,我在IIS中为自动布线添加了 Microsoft.Owin.Host.SystemWeb 软件包。
我在OWIN启动类的配置方法中放了一个断点。
当我在VS2013中将APP.Web.API设置为“启动项目”时,将触发断点。
但是,一旦我将App.Web设置为“启动项目”,然后从浏览器向App.Web.Api发出请求,Startup类中的断点就不再出现了。
我试图遵循在网上找到的一些建议(清理IIS临时文件,使用OWIN attibute等)但它不起作用。
似乎在IIS Express中,如果包含它的项目设置为启动项目,OWIN才会启动。
有人可以解释发生了什么吗?
答案 0 :(得分:1)
您只能拥有一个项目"设置为启动项目"在你的解决方案这个项目将是你App的起点,你可以根据这个"起点"来调试你的应用程序。
当您将App.Web.API设置为启动项目时,您将能够在Web Api的Startup.cs中调试您的应用程序。
当您将App.Web设置为启动项目时,您将无法在Web Api项目的Startup.cs中调试您的应用程序,因为您的Web Api项目触发了Startup.cs,不是你的App.Web项目。
可以帮助你的东西是红色断点按钮。如果在Startup.cs中设置断点并启动App.Web项目,您会注意到断点具有透明颜色,带有警告符号和以下消息:"断点目前不会被击中。没有为此文档加载任何符号。" 。这意味着根据您的"起点",无法获得此代码点。
因此,在您的情况下,当您从App.Web项目中删除应用程序时,Web Api方法正在运行,因为您已将项目附加到IIS,并且启动了Startup.cs,但未通过您的debuging过程那就是断点没有解雇的原因。