【问题标题】:ASP.NET 5 An error occurred while starting the applicationASP.NET 5 启动应用程序时出错
【发布时间】:2016-06-10 09:06:19
【问题描述】:

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

哎呀。 500 Internal Server Error 启动服务器时发生错误 应用。

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

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

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

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

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

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

【问题讨论】:

  • 在 web.cnfig 中启用 httpPlatform stdout 日志以查看日志文件中的实际错误。我遇到了错误,因为我的数据库权限设置不正确并且我使用的是集成安全性:-)
  • @MuqeetKhan Lmao 我这样做了,显然异常与无法找到配置文件有关。哎呀。该网站使用基于托管环境的配置文件。我不知道“发布”工具将托管环境更改为生产环境。我只是假设它仍然是开发......
  • 很高兴它有帮助。当你有机会时,你能接受答案吗?谢谢!

标签: c# asp.net iis-7.5 asp.net-core dnx


【解决方案1】:

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

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

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

【讨论】:

  • 你能告诉我这个选项在 Web.config 的哪个位置设置?
  • 在 wwwroot 文件夹中,web.config 将包含 httpPlatform 部分。此部分将具有 stdoutLogEnabled 属性。它的默认值为false,将其更改为true。执行此操作后重新启动 Web 池,它会引发错误确保在任务管理器中杀死 w3wp.exe 和 dnx.exe 的所有实例。
  • web.config 现已发布到wwwroot 的父文件夹,所以请在正确的位置查找!
  • 另一个提示可能会很好地包含在答案中,web.config 文件中的 aspNetCore 元素还包含一个“stdoutLogFile”属性,该属性指定将写入日志的文件夹。如果此文件夹尚不存在,IIS 将不会为您创建它(这让我有点困惑......我想知道为什么即使我有 stdoutLogEnabled="true" 也没有得到任何日志)。
【解决方案2】:

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

【讨论】:

  • 任何最佳实践解决方法?
  • 您是如何发现的、反复试验的,或者您是否在某处看到错误消息?
【解决方案3】:

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

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

2) 选择左侧的发布标签

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

4) 点击左侧的设置标签。

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

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

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

8) 点击保存

9) 发布

10) 交叉手指

【讨论】:

    【解决方案4】:

    问题:这个错误很可能是由于Application Pool Identities 的权限不足。找出:

    转到 Windows 任务管理器并在 详细信息选项卡/进程(取决于 Windows 操作系统)下查找 w3wp.exe 并在 User name 下查找您的应用程序(@ 987654324@ 通常是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

    点击 确定

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 2018-04-18
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多