2016-09-23 69 views
0

我試圖通過Visual Studio 2015將項目發佈到Azure Web應用程序。這是一個針對Framework 4.6.2的MVC 4。 VS2015中的發佈過程聲明已成功完成,但是,啓動瀏覽器以顯示發佈的站點時,它會在favicon.ico文件中出現502錯誤(錯誤的網關/​​代理)。顯然,那不是真正發生的事情。Azure Web App無法找到程序集'實體框架'

我從Web應用程序下載了我的eventlog.xml文件,並查看報告中的錯誤,聲稱無法找到程序集'EntityFramework,Version = 6.0.0.0 ...'。但是,我看到項目bin文件夾中包含的EntityFramework.dll。但是,爲了查看它是否有所作爲,我嘗試使用Kudu從NuGet安裝EntityFramework,並使用已成功推送到Azure的packages.config文件進行nuget恢復。所做的只是恢復了大量我不需要的文件,同樣的錯誤依然存在。

有沒有其他人看過這個問題,並有如何解決它的建議?我不確定還有什麼可以發佈的,以便更清楚地瞭解正在發生的事情......它不像任何代碼或源代碼,並且eventlog.xml文件僅顯示缺少程序集的YSOD錯誤消息。

請任何幫助,將不勝感激!

+0

Web項目中的packages.config文件是否包含對Entity Framework包的引用?有時如果您使用Resharper或其他工具來添加文件包的引用。配置不會更新,並且當您部署應用程序時,nuget不會恢復該文件。 –

+0

@KarelTamayo是的,packages.config文件包含EntityFramework和EntityFramework.SqlServer的一個行項目,並且軟件包通過軟件包管理器控制檯添加到項目中,而不是通過在解決方案資源管理器中添加引用。 – rcastagna

回答

0

我已經在過去有這樣 - 如果你仔細閱讀錯誤消息,它說,它無法加載該程序集或一些依賴的 - 因此它很可能是通過您的應用程序丟失的另一個DLL。

使用門戶中的控制檯刀片(或者如果您願意,可以單獨使用Kudu站點和控制檯)比較bin文件夾內容與dev/test環境中的內容並查看缺少的內容 - 如果您堅持使用nuget包,則你應該不會有太大的錯誤,但我認爲我之前用EF來解決問題的時候,我沒有直接從Web應用程序引用EF庫,而只是從Web引用的存儲庫程序集應用程序。

如果你不使用Nuget並直接引用依賴關係,請確保在VS中引用的dll的「複製到輸出」屬性設置正確,這樣dll最終會被複制到項目的bin文件夾幷包含在將其部署到Azure的包。

+0

我會看看這個,看看比較項目bin文件夾的內容和發佈的內容。另外,我已經看到了使用EF和獨立存儲庫程序集描述的問題。實際上,這是我們在這裏的場景,但我知道EF通過軟件包管理器控制檯安裝到存儲庫項目和Web應用程序項目中。我還驗證了所有非NuGet的程序集都有它們的副本,以適當地輸出集合。 – rcastagna

0

嗯,事實證明,這是一個「這不是真正的問題」的錯誤信息。感謝羅素和卡雷爾。您的輸入引導我驗證了幾件事情,並確保我已正確引用了所有內容。

下面是我發現的......我們的DEV SQL VM在週末關閉以節約資源(又名$$$)。在通過FTP從本地bin目錄發送所有文件後,我瀏覽到該網站並收到相同的錯誤。但是,下載日誌顯示我無法使用命名管道訪問數據庫服務器。哎呀......其中一個連接字符串(在存儲庫項目中)尚未設置爲FQDN,因此它沒有使用TCP/IP進行連接。

我修正了這個,發表了這個網站,翻了ON這個sql server,現在這個網站按預期工作。

道德故事,確保你有正確的連接字符串設置。

相關問題