将站点从本地主机部署到IIS时出现错误500

时间:2019-07-30 07:43:58

标签: sql-server iis asp.net-web-api2 web-deployment

我最终想将asp.net WebApi部署到IIS 10。 该站点可以在localhost上正常运行,但是一旦我尝试执行与数据库相关的任何操作,就会收到内部服务器错误(500)。

我检查了连接字符串,这似乎是正确的。 我在SQL Server上为Domain \ MachineName $添加了一个用户。

我的连接字符串:

<add name="myDB" connectionString="data source=correctserver;initial catalog=correctdatabase;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

失败的请求之一:

var request = new XMLHttpRequest()
request.open('GET', hostedserverurl + '/v1/correctapicall/' + correctrequestparameter, true)

错误在这里发生:

request.send()

预期结果:如果使用直接API调用,则与来自本地主机的JSON相同。 实际结果: 错误消息:(“ Fehler”是德语的“ Error”)

{"Message":"Fehler"}

我花了很多时间来完成这项工作,现在我已经完成了。但似乎更像是一堵墙... 我需要配置什么?我没有设置任何特殊设置。

编辑: 在webconfig的帮助下启用了更广泛的错误消息之后,我得以解决此内部异常:

"ExceptionMessage": "Die SELECT-Berechtigung wurde für das __MigrationHistory-Objekt, correctdatabase-Datenbank, dbo-Schema, verweigert.",
      "ExceptionType": "System.Data.SqlClient.SqlException",

这使我相信这是与用户权限相关的事情...但是我已经为IIS创建了一个用户。

1 个答案:

答案 0 :(得分:0)

每次复制生产数据库时,都会得到此信息,将其重命名为我的dev数据库,而忘记将我的dev用户添加到新的dev db中-这是EF尝试做的第一件事(当您执行任何数据库时)操作)是建立迁移历史表的存在/设置-如果正在使用的用户没有特权或不存在,则会发生类似错误

确保数据库中存在运行应用程序池的登录名/用户对。如果您的IIS应用程序池称为Wiggle,则需要在数据库内部为[IIS APPPOOL \ Wiggle]创建一个登录名/用户对,并确保该用户有权创建表,执行所有CRUD操作等

您可以在IIS管理器中查看您的站点正在使用哪个应用程序池;选择该站点,然后单击右上角的基本设置

ps;如果仍然无法解决问题,则应发布一些设置页面的屏幕快照,这些设置页面用于设置站点,站点的应用程序池(及其使用的本地身份)以及SQL Server用户。不要像我在这里一样使它们晦涩难懂,因为我们需要看到它们来检查它们的设置:

网站设置:

enter image description here

应用程序池设置:

enter image description here

SQLS设置:

enter image description here enter image description here