2016-02-26 73 views
18

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

糟糕。 500内部服务器错误启动 应用程序时发生错误。

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

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

我按照指示here部署到IIS。

我也尝试过提供的建议here(选择“在发布之前删除所有现有文件”重新发布)。 (该OP有一个稍微不同的错误,所以这就是为什么我发布一个新的问题。)

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

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

+2

启用httpPlatform标准输出记录web.cnfig以查看日志文件中的实际错误。我有错误,因为我的数据库权限设置不正确,我使用的是集成安全性:-) –

+1

@MuqeetKhan Lmao我这样做了,显然这个例外与无法找到配置文件有关。 OOPS。该网站使用基于主机环境的配置文件。我不知道“发布”工具将主机环境更改为生产。我只是假定它还在开发中...... – painiyff

+1

很高兴帮助。当你有机会时你能接受答案吗?谢谢 ! –

回答

34

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

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

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

enter image description here

+1

你能告诉我在Web.config这个选项设置在哪里吗?在wwwroot文件夹中的 –

+3

web.config将包含httpPlatform部分。本节将具有stdoutLogEnabled属性。它的默认值是false,将其更改为true。这样做后重新启动网络池,它会引发错误,确保在任务管理器中终止w3wp.exe和dnx.exe的所有实例。 –

+0

'web.config'现在发布到'wwwroot'的父文件夹中,所以请在正确的位置找到它! – ErikE

8

这个错误也当你试图从启动一个数据库连接(例如,用于播种)的现象,而且在部署服务器上,由于在数据库服务器insufficent previleges失败。

+1

任何最佳实践解决这个问题? – MGDavies

+0

您是如何发现,试错的,或者您是否在某处看到错误消息? –

2

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

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

2)选择左侧

3)在总结部分的发布选项卡中,有一个“设置...”链接。点击它。这将打开“发布”对话框。

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

5)展开文件发布选项,检查

6)展开数据库“在目的地删除其他文件”,勾选“在运行时使用此连接字符串”(这是预先填充了基于我的Azure的SQL连接字符串如何我原先设置我的发布选项)

7)扩大实体框架迁移,勾选“上发布应用此迁移”(同样,连接字符串被预先填入)

8)单击保存

9)发布

10)交叉手指

+0

这对我有用。谢谢! –

0

问题:最有可能这个错误是由于权限不足的Application Pool Identities。要了解:

转到Windows 任务管理器细节选项卡/过程(根据Windows OS)w3wp.exeUser 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>

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

    - 下层默认架构输入dbo

  • 在框Database role membership for:<Your_App_Database>

    - 检查以下框:db_datareaderdb_datawriter,并public

点击OK

现在试图访问你的应用程序,它应该工作!