3

当我从 Visual Studio 运行我的网站时,一切正常。现在我正在尝试继续并开始测试多租户部分,所以我不得不将我的网站移动到 IIS。

由于某种原因,我无法访问数据库。打开需要访问数据库的页面时出现的错误是:

无法打开登录请求的数据库“GWD”。登录失败。用户 'IIS APPPOOL\gwd' 登录失败。

异常详细信息:System.Data.SqlClient.SqlException:无法打开登录请求的数据库“GWD”。登录失败。用户 'IIS APPPOOL\gwd' 登录失败。

另一个论坛描述了如何添加NT AUTHORITY\NETWORK SERVICE. 但这并不能解决问题。我确实NT AUTHORITY\NETWORK SERVICE为所有现有数据库(包括主数据库)创建并添加了 dbowner,但没有结果。

我没有想法,有人可以帮忙吗?

4

5 回答 5

9

您还需要将应用程序池标识更改NETWORK SERVICE为。启动 Internet 信息服务 (IIS) 管理器,深入到应用程序池,然后选择您正在使用的应用程序池。(不确定?深入到左侧站点下的虚拟目录,然后单击右侧的基本设置。)然后单击您的应用程序池,单击高级设置,然后将进程模型下的身份更改为网络服务。

在 SQL Server Management Studio 中,您需要在NT AUTHORITY\NETWORK SERVICE数据库的安全性下添加用户,但听起来您已经这样做了。

于 2013-02-02T13:23:27.937 回答
2

您看到错误“无法打开登录请求的数据库“GWD”。登录失败。用户“IIS APPPOOL\gwd .....”的登录失败,因为您将应用程序复制到 IIS 服务器并且成员资格提供程序已在没有 applicationName 属性的情况下添加到 web.config 文件中。

我建议你在你的提供者声明中添加一个“applicationName”属性。例子:

<membership>
<providers>
<add name ....
.
.
.
.
applicationName="/yourWebApp" />

</providers>
</membership>

只需查看 aspnet_Application 表即可找出在开发期间创建用户/数据时使用的应用程序名称。

我希望它有所帮助。

于 2013-02-02T15:55:04.100 回答
1

@Nicholas Piasecki 提供了一种潜在的解决方案,另一种是保留应用程序池,而是授予它当前在访问数据库的情况下运行的 AppPoolIdentity。

首先,您需要为用户添加一个新的 Windows 登录到 SQL Server:“IIS APPPOOL\gwd”。

完成此操作后,您将能够将该用户添加到具有适当权限的数据库中,就像您为网络服务所做的那样。

于 2013-02-02T13:51:49.827 回答
1

我认为您必须阅读这篇文章 从 codeproject 配置 IIS、asp.net 和 SQL Server 在本文中,您将学习如何使用网络服务配置 IIS 和 SQL Server(附截图)

本文内容

  • 安装 IIS
  • 为网络服务配置 IIS
  • 配置 SQL Server 权限
于 2014-10-23T07:28:29.983 回答
0

在您的 IIS 上选择您在站点上使用的应用程序池 > 右键单击​​ > 单击高级设置。在身份上选择“网络服务”

在此处输入图像描述

在您的数据库 [SQL] 上为 NT AUTHORITY\NETWORK SERVICE 创建登录名。修改用户映射

在此处输入图像描述

于 2018-12-04T05:56:32.533 回答