发布 ASP.NET Web 应用程序后,我尝试在本地服务器上托管该网站。然而,当我启动它时,它在我的浏览器中给出了这个错误:
哎呀。 500 Internal Server Error 启动时发生错误 申请。
如何调试这个错误是什么?在 Visual Studio 中开始使用 IISExpress 和“web”时,该网站可以运行(调试和发布配置)。
我使用的是开发环境,并且已经指定了
app.UseDeveloperExceptionPage();
。
我已按照此处的说明部署到 IIS。
我还尝试了here提供的建议(重新发布并选择“发布前删除所有现有文件”)。 (那里的OP有一个稍微不同的错误,所以这就是我发布一个新问题的原因。)
我在互联网上查找了几个小时,但似乎没有太多相关内容。有什么想法吗?
我使用的是 Windows 7,使用 ASP.NET 5 RC1。
您应该在 web.config 文件中设置
stdoutLogEnabled=true
以查看实际发生的错误。您可以使用 stdoutLogFile
参数指示这些文件的写入位置;下面的屏幕截图示例写入stdoutLogFile=".\logs\stdout"
。 (您应该确保该目录存在;应用程序不会创建它)
至于无法找到正确的配置文件,是的,默认环境是生产环境。它在项目属性中的 Visual Studio 中明确设置为开发。
更新:在AspNetCore RTM中,该模块在web.config中的system.webServer节点下称为aspnetCore。另外,正如 @ErikE 在评论中指出的那样,web.config 现在位于项目的根目录中,而不是像以前的版本那样位于 wwwroot 下。
当您尝试从启动时建立数据库连接(例如用于播种)并且由于数据库服务器上的权限不足而在部署服务器上失败时,也会发生此错误。
此错误在多种情况下会发生。在我的情况下,我没有正确设置数据库连接字符串。我在 Visual Studio 2017 中修复了它,如下所示:
1) 右键单击项目,选择发布,在主区域打开发布页面。
2) 选择左侧的“发布”选项卡
3)在“摘要”部分下,有一个“设置...”链接。点击它。这将打开“发布”对话框。
4) 单击左侧的“设置”选项卡。
5) 展开文件发布选项,选中“删除目标位置的其他文件”
6) 展开数据库,选中“在运行时使用此连接字符串”(这是根据我最初设置发布选项的方式预先填充了我的 Azure SQL 连接字符串)
7) 展开实体框架迁移,选中“在发布时应用此迁移”(同样,连接字符串已预先填充)
8) 单击“保存”
9) 发布
10)交叉手指
我遇到了同样的问题。 检查日志发现,里面config.json => HostConfig FileUpload路径(指向本地驱动器)不正确。并创建重新启动应用程序的问题。 结论:这个问题可能有多种原因。
问题:此错误很可能是由于
Application Pool Identities
的权限不足造成的。找出答案:
转到 Windows 任务管理器并在详细信息选项卡/进程(取决于 Windows 操作系统)下查找
w3wp.exe
,然后在 User name
下查找作为 运行的应用程序(
<App_Pool_Name>
通常为
DefaultAppPool
) IIS Worker Process
。如果您的应用程序未在那里列出,则该应用程序对您的数据库没有足够的权限。
要修复它:执行以下操作并授予对您的应用程序的完全访问权限:
转到您的SQL Server Management Studio并以管理员身份登录,打开安全>登录>右键单击登录并添加
New Login
:
在常规下:
对于
Login Name:
输入 IIS APPPOOL\<App_Pool_Name>
通常 DefaultAppPool
对于
Default Database:
指向 <Your_App_Database>
在用户映射下:
在盒子上
Users mapped to this login:
-选中复选框以映射到
<Your_App_Database>
-在用户下 Enter
IIS APPPOOL\<App_Pool_Name>
通常 DefaultAppPool
-在默认架构下 Enter
dbo
在盒子上
Database role membership for:
<Your_App_Database>
-选中以下框:
db_datareader
、db_datawriter
和public
点击确定
现在尝试访问您的应用程序,它应该可以工作!!!
当我遇到此问题时,“在 web.config 文件中设置 stdoutLogEnabled=true 以查看实际错误”是一个很好的提示,它为我节省了很多时间进行故障排除。
我能够获得有关导致错误 500 消息的原因的更多详细信息。日志报告 Microsoft.Data.SqlClient 文件加载失败。使用此文件的 NuGet 包重新安装解决了问题。