2015-05-18 35 views
1

我在VS2013與以下設置的解決方案:OWIN沒有啓動起來,如果項目沒有與IIS Express中設置爲啓動

  • App.Web(只有靜態文件的Web項目)
  • App.Web .API(與OWIN的Web API項目)

兩個項目有一個默認的網址指向自己自己本地主機:端口X(我用IIS快遞),所以App.Web監聽在localhost:2222 APP.Web.API正在監聽localhost:3333。

我設置了App.Web.API以使用OWIN,並且我爲IIS中的autofire添加了包Microsoft.Owin.Host.SystemWeb

我在OWIN啓動類的配置方法中放置了一個斷點。

當我在VS2013中將APP.Web.API設置爲「啓動項目」時,會觸發斷點。

但是,儘快將App.Web設置爲「啓動項目」,然後從瀏覽器向App.Web.Api發出請求,Startup類中的斷點不再被觸發。

我試圖按照在網上找到的一些建議(清理IIS臨時文件,使用OWIN attibute等..),但它不工作。

似乎在IIS Express中,如果包含它的項目設置爲啓動項目,OWIN只會啓動。

有人可以解釋發生了什麼?

回答

1

您的解決方案中只能有一個項目「設置爲啓動項目」。這個項目將成爲你App的起點,你可以根據這個「Start Point」調試你的應用程序。

當您將App.Web.API設置爲啓動項目時,您將能夠在Web Api的Startup.cs中調試您的應用程序。

當您將您的App.Web設置爲您的啓動項目時,您將無法在Web Api項目的Startup.cs中調試您的應用程序,因爲Startup.cs是由您的Web Api項目觸發的,而不是你的App.Web項目。

可以幫助你的東西是紅色的斷點按鈕。如果您在Startup.cs中設置了斷點並啓動了App.Web項目,則會注意到該斷點具有透明顏色,並帶有警告符號和以下消息:「斷點當前不會觸及沒有符號已經加載這個文件。「。這意味着根據您的「起點」,無法獲取此代碼點。

所以在你的情況下,當你從App.Web項目中釋放你的應用程序時,Web Api方法正在工作,因爲你已經將該項目連接到了IIS,並且Startup.cs被解僱了,而不是被你的調試過程,這就是爲什麼斷點沒有被解僱的原因。