【发布时间】:2015-09-10 03:12:52
【问题描述】:
我有一个包含 Web API 2 服务的 ASP.NET MVC 5 应用程序,并将它发布到我的 Azure 网站。静态站点工作得很好——当我提供虚拟数据时,Web API 也工作得很好。
由于我添加了一个 SQLite 数据库(在 App_Data 内的 .db3 文件中),我无法再调用我的 Web API 服务 - 我只是收到“发生错误”消息,而且我似乎无法找出如何真正找出问题所在。
我还在我的应用程序中安装了带有 XML 文件存储的 Elmah.MVC,但是当我尝试导航到 http://myapp.azurewebsites.net/elmah 时,我什么也得不到 - 好像从未发生过错误......
好的,现在我被困在我的机器上——当然——这一切都很好。但是整个 Azure 部署故事对我来说仍然是一个很大的谜团。
- 如何找到任何类型的错误日志,以便开始了解发生了什么?
- 我有什么方法可以查看构成此应用的文件系统中的文件?我想检查一下我希望看到的所有文件是否真的到位
更新:感谢 David 的回答,我能够使用 FTP 访问“详细”错误页面(我只是以某种方式记得一个演示,其中日志消息正在实时显示,在我的门户中相信 - 必须使用 FTP 来获取日志似乎有点“笨拙”......)
我收到此错误(我完全不明白,也不知道该怎么办......)
HTTP 错误 500.0 - 内部服务器错误
由于发生内部服务器错误,页面无法显示。
最可能的原因:
IIS 收到请求;但是,在处理请求期间发生了内部错误。此错误的根本原因取决于处理请求的模块以及发生此错误时工作进程中发生的情况。
IIS 无法访问网站或应用程序的 web.config 文件。如果 NTFS 权限设置不正确,可能会发生这种情况。
IIS 无法处理网站或应用程序的配置。
经过身份验证的用户没有使用此 DLL 的权限。
该请求已映射到托管处理程序,但未安装 .NET 可扩展性功能。你可以尝试的事情:
确保 web.config 文件的 NTFS 权限正确并允许访问 Web 服务器的计算机帐户。
检查事件日志以查看是否记录了任何其他信息。
验证 DLL 的权限。
如果请求映射到托管处理程序,请安装 .NET 可扩展性功能。
创建跟踪规则以跟踪此 HTTP 状态代码的失败请求。有关为失败的请求创建跟踪规则的更多信息,请单击此处。
我希望我知道如何在 Azure 网站设置中尝试任何“您可以尝试的事情”......任何接受者?
更新 #2: 通过一些“神秘”的调试,我发现根本错误是:
DllNotFoundException:无法加载 DLL“SQLite.Interop.dll”:找不到指定的模块。 (HRESULT 异常:0x8007007E)
所以我的问题是:SQLite.Interop.dll 是什么,我为什么需要它?我刚刚安装了System.Data.SQLite.Core NuGet 包(不需要 EF6 支持等) - 在本地工作得很好,但是当部署到 Azure 网站时,突然搜索到了额外的 DLL 却找不到......为什么那个??
【问题讨论】:
-
可能是 Visual C++ 运行时库的问题? system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
-
你是怎么解决的?我有完全相同的问题。在本地它工作正常,但在 Azure 网站上缺少 SQLite.Interop.dll。我正在使用相同的 Nuget 包,我想避免需要将 dll 设置为复制到 bin 文件夹的解决方案。 Nuget 包应该会自动执行此操作,对吧...?
-
@emzero:我无法用 SQLite 解决这个问题 - 我切换到 SQL Server CE(精简版),效果很好。
标签: asp.net-mvc sqlite azure