2016-09-23 66 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,现在这个网站按预期工作。

道德故事,确保你有正确的连接字符串设置。

相关问题