【问题标题】:OWIN not firing up if project not set as Startup with IIS Express如果项目未设置为使用 IIS Express 启动,OWIN 不会启动
【发布时间】:2015-07-30 03:35:59
【问题描述】:

我在 VS2013 中有一个解决方案,设置如下:

  • App.Web(仅包含静态文件的 Web 项目)
  • App.Web.API(使用 OWIN 的 Web API 项目)

这两个项目都有一个默认 url 指向他们的 自己的 localhost:portX(我使用的是 IIS Express),所以 App.Web 正在监听 localhost:2222 并且 APP.Web.API 正在监听在 localhost:3333 上。

我将 App.Web.API 设置为使用 OWIN,并添加了包 Microsoft.Owin.Host.SystemWeb 以在 IIS 中自动启动。

我在OWIN启动类的配置方法中放了一个断点。

当我在 VS2013 中将 APP.Web.API 设置为“启动项目”时,会遇到断点。

但是,一旦我将 App.Web 设置为“启动项目”,然后从浏览器向 App.Web.Api 发出请求,Startup 类的断点就不再被命中。

我尝试遵循在网上找到的一些建议(清理 IIS 临时文件,使用 OWIN 属性等),但它不起作用。

似乎只有在将包含它的项目设置为启动项目时,OWIN 才会启动 IIS Express。

有人可以解释发生了什么吗?

【问题讨论】:

    标签: visual-studio-2013 owin iis-express katana


    【解决方案1】:

    您的解决方案中只能有一个项目“设置为启动项目”。这个项目将是你应用的起点,你可以根据这个“起点”调试你的应用。

    当您将 App.Web.API 设置为 Startup 项目时,您将能够在 Web Api 的 Startup.cs 中调试您的应用程序。

    当您将 App.Web 设置为 Startup 项目时,您将无法在 Web Api 项目的 Startup.cs 中调试您的应用程序,因为 Startup.cs 是由您的 Web Api 项目触发的,而不是您的App.Web 项目。

    可以帮助您的是红色断点按钮。如果您在 Startup.cs 中设置断点并启动您的 App.Web 项目,您会注意到断点具有透明颜色,带有警告符号和以下消息:“断点当前不会被击中。没有为此文档加载任何符号。"。这意味着根据您的“起点”,无法获取此代码点。

    因此,在您的情况下,当您从 App.Web 项目调试应用程序时,Web Api 方法正在工作,因为您已经将项目附加到 IIS,并且 Startup.cs 被触发,但不是由您的调试过程触发,这就是断点没有触发的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多