我有一个包含Web API 2服务的ASP.NET MVC 5应用程序,我将它发布到我的Azure网站。静态网站工作正常 - 当我提供虚拟数据时,Web API也能正常工作。
由于我添加了一个SQLite数据库(在.db3
内的App_Data
文件中),我无法再调用我的Web API服务 - 我只是收到“发生错误”消息,而我似乎无法找出如何真正弄清楚出了什么问题。
我还在我的应用程序中安装了带有XML文件存储的Elmah.MVC,但是当我尝试导航到http://myapp.azurewebsites.net/elmah时,我什么都没得到 - 好像没有发生任何错误......
好的,现在我卡住了 - 当然在我的机器上 - 当然 - 一切正常。但是整个Azure部署故事对我来说仍然是一个很大的谜 - 现在仍然如此。
更新:感谢大卫的回答,我能够使用FTP访问“详细”错误页面(我只是记得在门户网站I中实时显示日志消息的演示相信 - 必须使用FTP来获取日志似乎有点“笨拙”......)
我收到此错误(我完全不理解,不知道该怎么做......)
HTTP错误500.0 - 内部服务器错误
由于发生内部服务器错误,无法显示页面。
最有可能的原因是:
IIS收到了请求;但是,在处理请求期间发生了内部错误。此错误的根本原因取决于哪个模块处理请求以及发生此错误时工作进程中发生的情况 IIS无法访问网站或应用程序的web.config文件。如果NTFS权限设置不正确,则会发生这种情况 IIS无法处理网站或应用程序的配置 经过身份验证的用户无权使用此DLL 请求将映射到托管处理程序,但未安装.NET可扩展性功能。
你可以尝试的事情:
确保web.config文件的NTFS权限正确,并允许访问Web服务器的计算机帐户。
检查事件日志以查看是否记录了任何其他信息 验证DLL的权限 如果请求映射到托管处理程序,请安装.NET Extensibility功能 创建跟踪规则以跟踪此HTTP状态代码的失败请求。有关为失败的请求创建跟踪规则的更多信息,请单击此处。
我希望自己能够在Azure网站设置中尝试任何“可以尝试的东西”......任何参与者?
更新#2:进行了一些“奥术”调试,我能够发现根错误是:
DllNotFoundException:无法加载DLL'SQLite.Interop.dll':找不到指定的模块。 (HRESULT异常:0x8007007E)
所以我的问题是:SQLite.Interop.dll
是什么,我为什么需要它?我刚刚安装了System.Data.SQLite.Core
NuGet包(不需要EF6支持等) - 本地工作正常,但是当部署到Azure网站时,突然发现额外的DLL被搜索到但没有找到....为什么会这样?
答案 0 :(得分:4)
基于网络的服务控制经理是你的朋友。在任何浏览器中转到myapp.scm.azurewebsites.net
。
要查看文件系统中的文件,请从服务控制管理器转到调试控制台>电源外壳。这使您可以使用PowerShell检查所有文件。
要查看正在显示的日志消息,请从服务控制管理器转到工具>记录流。这将显示您想要的流日志。
答案 1 :(得分:2)
您可以使用“诊断”设置打开“Web服务器日志记录”和FTP连接以查看文件系统中的文件。
从任一Azure门户网站打开您的网络应用程序/网站。
Azure管理门户(manage.windowsazure.com):
开启诊断功能。来自Configure -> application diagnostics/site diagnostics
。您可以在此处打开不同的诊断设置。日志文件可通过FTP查看。
FTP。来自Dashboard
。列在屏幕右侧,您会看到FTP HOST NAME
和DEPLOYMENT/FTP USER
。密码与部署凭据设置相同。
新Azure门户(portal.azure.com)
Settings -> Diagnostic logs
。在这里,您可以打开诊断程序。 FTP主机/用户设置也在这里。如果需要,使用Settings -> Deployment credentials
设置/重置FTP密码。
编辑:
要查看实时流和其他性能监控,您可以使用portal.azure.com管理器中的Tools
部分。它位于Settings
cog图标的旁边,还会为您提供Console
之类的内容,您可以在其中执行针对主机的有限命令。