ASP.NET 5启动应用程序时发生错误
发布ASP.NET Web App后,我正在尝试在本地服务器上托管该网站。 但是,当我启动它时,它在我的浏览器中给出了这个错误:
哎呀。 500内部服务器错误启动应用程序时发生错误。
如何调试此错误是什么? 在Visual Studio中开始使用IISExpress和“web”时,该网站可以工作(包括调试和发布配置)。
我正在使用开发环境,我已经指定了app.UseDeveloperExceptionPage();
。
我已按照此处的说明部署到IIS。
我也尝试过这里提出的建议(选择“删除发布前删除所有现有文件”重新发布)。 (OP有一个稍微不同的错误,所以这就是我发布一个新问题的原因。)
我在网上看了几个小时,但似乎没有太多关于它的内容。 有任何想法吗?
我在Windows 7上,使用ASP.NET 5 RC1。
您应该在web.config文件中设置stdoutLogEnabled=true
以查看正在发生的实际错误。 您可以使用stdoutLogFile
参数指示这些文件的写入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)展开Entity Framework Migrations,选中“在发布时应用此迁移”(同样,预先填充了连接字符串)
8)单击“保存”
9)发布
10)交叉你的手指
问题:最有可能的错误是由于Application Pool Identities
权限不足。 要找出:
转到Windows 任务管理器 ,在详细信息选项卡/进程(根据Windows操作系统)下查找w3wp.exe
并在User name
查找作为IIS Worker Process
在那里运行的应用程序(
通常为DefaultAppPool
)。 如果您的应用程序未在此处列出,则应用程序对您的数据库没有足够的权限。
修复此问题:执行以下操作并授予对应用程序的完全访问权限:
转到SQL Server Management Studio并以管理员身份登录打开安全性 > 登录 >右键单击登录并添加New Login
:
一般情况下:
-
对于
Login Name:
输入IIS APPPOOL\
通常为DefaultAppPool
-
对于
Default Database:
指向
在用户映射下 :
-
在框上
Users mapped to this login:
– 选中 Map to
复选框– 用户输入
IIS APPPOOL\
通常是DefaultAppPool
– 在默认架构下输入
dbo
-
在“
Database role membership for:
”框中Database role membership for:
– 检查以下框:
db_datareader
,db_datawriter
和public
单击 确定
现在尝试访问您的应用程序,它应该工作!