簡體   English   中英

升級到MVC 5和Web API 2后,如何讓我的Web API應用程序再次運行?

[英]How can I get my Web API app to run again after upgrading to MVC 5 and Web API 2?

我使用此指南將Web API應用程序升級到funkelnagelneu版本:

http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and- Web的API-2

然而,在完成這些步驟之后(似乎所有這些都應該是自動化的,無論如何),我試圖運行它並得到,“ 無法直接啟動具有類庫的輸出類型的項目

什么Sam Hills Brothers Coffee正在這里發生什么? 誰說這是一個班級圖書館?

所以我打開了Project> Properties,並對其進行了更改(由於某種原因,它標記為“類庫” - 它要么不是昨天,要么工作正常)到“Windows應用程序”的輸出類型(“控制台應用程序”)和“類庫”是唯一的其他選項)。

現在它不會編譯,抱怨:“ 程序'c:\\ Platypus_Server_WebAPI \\ PlatypusServerWebAPI \\ PlatypusServerWebAPI \\ obj \\ Debug \\ PlatypusServerWebAPI.exe'不包含適用於入口點的靜態'Main'方法......

鑒於這種困境,如何讓我的Web API應用程序重新啟動並運行?

UPDATE

查看packages.config,兩個條目看起來很划傷:

<package id="Microsoft.AspNet.Providers" version="1.2" targetFramework="net40" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />

所有其他人都以net451為目標。 這可能是問題嗎? 我應該刪除這些包嗎?

更新2

我嘗試通過NuGet包管理器卸載Microsoft.Web.Infrastructure包(它的描述讓我相信我不需要它;而且,它沒有依賴性),但它告訴我,“ NuGet無法安裝或卸載以下項目中的選定包。[我的]

更新3

我再次走了幾步,發現我錯過了一步。 我不得不在Application web.config文件中更改此條目:

<dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

(從“4.0.0.0”到“5.0.0.0”)

...但我仍然得到相同的結果 - 它重建/編譯,但不會運行,“ 具有類庫的輸出類型的項目無法直接啟動

更新4

考慮到錯誤信息,它不能直接打開一個類庫,我想,“當然你不能/不會 - 這是一個網絡應用程序,而不是一個項目。所以我跟着預感,關閉了項目,並重新打開它作為一個網站(而不是重新開放項目)。

這讓我更進一步,至少; 現在我看到了一個YSOD:

無法加載文件或程序集'System.Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依賴項之一。 該系統找不到指定的文件。

更新5

注意:該項目現在(在作為網站打開后)名為“localhost_48614”

並且...不再有“引用”文件夾......?!?!?

至於那個YSOD,我正在獲得官方指示( http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api -project-to-aspnet-mvc-5-and-web-api-2 )說這樣做,我引用:

將包含”System.Web.WebPages.Razor“的所有元素從版本”2.0.0.0“更新為
版本“3.0.0.0” 。“

更新6

當我選擇工具>庫包管理器>管理解決方案的NuGet包時,我得到“操作失敗。無法找到解決方案目錄。請確保已保存解決方案。”

所以我保存它,它用這個時髦的新名稱保存它(C:\\ Users \\ clay \\ Documents \\ Visual Studio 2013 \\ Projects \\ localhost_48614 \\ localhost_48614.sln)

我在NuGet軟件包管理器的頂部找到了啟動黃色條帶告訴我,“ 此解決方案中缺少一些NuGet軟件包。點擊從您的在線軟件包源恢復。

我這樣做(點擊“恢復”按鈕),然后下載丟失的軟件包......我最終得到了30個軟件包。

我嘗試再次運行app / site,並且......以前的YSOD成為編譯錯誤:

預應用程序啟動初始化方法啟動類型System.Web.Mvc.PreApplicationStartCode引發異常,並顯示以下錯誤消息:無法加載文件或程序集'System.Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral ,PublicKeyToken = 31bf3856ad364e35'或其依賴項之一。 該系統找不到指定的文件..

Argghhhh! (而且它甚至不是像海盜一樣的談話)。

更新7

我仍然很好奇為什么Humpty Dumpty倒下並打破了他的王冠(可以這么說),但我終於全力以赴,創建了一個新的項目,復制和粘貼代碼 - 它工作得很好(VS 2013和Web API,使用從VS 2008,.NET 3.5客戶端應用程序調用的REST方法)。

在遷移指南的最后一步中,您是否刪除了指定的MVC4 Project Guid? 我遇到了和你一樣的問題,當我回溯我的步驟時意識到我已經刪除了我的.csproj文件中的所有三個Guid。 我在此元素中恢復了其他Guids,解決方案現在將其識別為MVC應用程序,現在可以正常工作。 所以該行現在寫道:

<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>

希望有所幫助

我最近遇到了這個問題,但這是一個簡單的修復。 我的解決方案中有多個項目(包括幾個共享PCL),當我卸載項目以更改ProjectTypeGuids時,它將PCL設置為默認值。 右鍵單擊我的Web服務項目並將其設置回默認的啟動項目,修復它並且一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM