ASP.NET 5 启动应用程序时出错

ASP.NET 5 An error occurred while starting the application

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

Oops. 500 Internal Server Error An error occurred while starting the application.

如何调试这个错误是什么?在 Visual Studio.

中开始使用 IISExpress 和 "web" 时,该网站可以正常工作(调试和发布配置)

我用的是Development环境,我已经指定了app.UseDeveloperExceptionPage();

我已按照说明 here 部署到 IIS。

我也尝试了 提供的建议(选择 "Delete all existing files prior to publish" 重新发布)。 (那里的 OP 有一个稍微不同的错误,所以这就是我发布一个新问题的原因。)

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

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

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

至于找不到合适的配置文件,是的,默认环境是生产环境。它在项目属性的 visual studio 中明确设置为开发。

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

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

在几种情况下会发生此错误。在我的情况下,我没有正确设置数据库连接字符串。我在 Visual Studio 2017 年将其修复如下:

1) 右击项目,select发布,在主区打开发布页面。

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

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

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

5) 展开文件发布选项,选中 "Remove additional files at destination"

6) 展开数据库,检查 "Use this connection string at runtime"(这是根据我最初设置发布选项的方式使用我的 Azure SQL 连接字符串预填充的)

7) 展开 Entity Framework 迁移,检查 "Apply this migration on publish"(同样,连接字符串已预先填充)

8) 点击保存

9) 发布

10) 交叉手指

问题: 此错误很可能是由于 Application Pool Identities 的权限不足造成的。了解一下:

转到windows任务管理器并在详细信息选项卡/进程下(取决于WindowsOS) 查找 w3wp.exe 并在 User name 下查找您的应用程序(<App_Pool_Name> 通常 DefaultAppPool) 运行 那里有一个 IIS Worker Process。如果您的应用未在此处列出,则该应用对您的数据库没有足够的权限。

修复它:执行以下操作并授予对您的应用的完全访问权限:

转到您的 SQL Server Management Studio 并以 Administrator 身份登录并打开 Security > Logins > 右键单击​​ Logins 并添加 New Login:

一般情况下:

  • Login Name:输入IIS APPPOOL\<App_Pool_Name>通常DefaultAppPool

  • 对于Default Database:指向<Your_App_Database>

用户映射下

  • 盒子上Users mapped to this login:

    -选中 映射到 <Your_App_Database>

    的框

    -用户下输入IIS APPPOOL\<App_Pool_Name>通常DefaultAppPool

    -在默认架构下输入dbo

  • 盒子上Database role membership for:<Your_App_Database>

    -选中以下框:db_datareaderdb_datawriterpublic

点击 确定

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

我遇到了同样的问题。 查看日志,发现里面 config.json => HostConfig FileUpload path (pointing local drive) 不正确。并创建问题以重新启动应用程序。 结论:这个问题可能有多种原因。