ASP.NET 5 启动应用程序时发生错误

问题描述 投票:0回答:6

发布 ASP.NET Web 应用程序后,我尝试在本地服务器上托管该网站。然而,当我启动它时,它在我的浏览器中给出了这个错误:

哎呀。 500 Internal Server Error 启动时发生错误 申请。

如何调试这个错误是什么?在 Visual Studio 中开始使用 IISExpress 和“web”时,该网站可以运行(调试和发布配置)。

我使用的是开发环境,并且已经指定了

app.UseDeveloperExceptionPage();

我已按照此处的说明部署到 IIS。

我还尝试了here提供的建议(重新发布并选择“发布前删除所有现有文件”)。 (那里的OP有一个稍微不同的错误,所以这就是我发布一个新问题的原因。)

我在互联网上查找了几个小时,但似乎没有太多相关内容。有什么想法吗?

我使用的是 Windows 7,使用 ASP.NET 5 RC1。

c# asp.net iis-7.5 asp.net-core dnx
6个回答
38
投票

您应该在 web.config 文件中设置

stdoutLogEnabled=true
以查看实际发生的错误。您可以使用
stdoutLogFile
参数指示这些文件的写入位置;下面的屏幕截图示例写入
stdoutLogFile=".\logs\stdout"
。 (您应该确保该目录存在;应用程序不会创建它)

至于无法找到正确的配置文件,是的,默认环境是生产环境。它在项目属性中的 Visual Studio 中明确设置为开发。

更新:在AspNetCore RTM中,该模块在web.config中的system.webServer节点下称为aspnetCore。另外,正如 @ErikE 在评论中指出的那样,web.config 现在位于项目的根目录中,而不是像以前的版本那样位于 wwwroot 下。


8
投票

当您尝试从启动时建立数据库连接(例如用于播种)并且由于数据库服务器上的权限不足而在部署服务器上失败时,也会发生此错误。


2
投票

此错误在多种情况下会发生。在我的情况下,我没有正确设置数据库连接字符串。我在 Visual Studio 2017 中修复了它,如下所示:

1) 右键单击项目,选择发布,在主区域打开发布页面。

2) 选择左侧的“发布”选项卡

3)在“摘要”部分下,有一个“设置...”链接。点击它。这将打开“发布”对话框。

4) 单击左侧的“设置”选项卡。

5) 展开文件发布选项,选中“删除目标位置的其他文件”

6) 展开数据库,选中“在运行时使用此连接字符串”(这是根据我最初设置发布选项的方式预先填充了我的 Azure SQL 连接字符串)

7) 展开实体框架迁移,选中“在发布时应用此迁移”(同样,连接字符串已预先填充)

8) 单击“保存”

9) 发布

10)交叉手指


1
投票

我遇到了同样的问题。 检查日志发现,里面config.json => HostConfig FileUpload路径(指向本地驱动器)不正确。并创建重新启动应用程序的问题。 结论:这个问题可能有多种原因。


0
投票

问题:此错误很可能是由于

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

点击确定

现在尝试访问您的应用程序,它应该可以工作!!!


0
投票

当我遇到此问题时,“在 web.config 文件中设置 stdoutLogEnabled=true 以查看实际错误”是一个很好的提示,它为我节省了很多时间进行故障排除。

我能够获得有关导致错误 500 消息的原因的更多详细信息。日志报告 Microsoft.Data.SqlClient 文件加载失败。使用此文件的 NuGet 包重新安装解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.