我有一个连接到SQL Server的MVC应用程序(我使用ADO.NET Entity Framework 6.0进行数据库首次安装)。当我在笔记本电脑上调试时,它可以正确连接到SQL Server,并呈现页面而不会出现问题。但是,当我发布并连接到远程服务器(也托管SQL Server实例)时,出现错误:Select permission was denied
。值得注意的是,此设置仅在连接到公司网络(或使用VPN)且服务器仅是Intranet时才起作用。
我一直在寻找潜在的解决方案,并且数据库上的用户帐户具有db_datareader
和db_datawriter
权限。我的连接字符串要求输入integrated security=True
。
我使用这些设置从桌面应用程序访问同一数据库,没有任何问题,所以我认为IIS评估用户的方式有所不同。
为了进行数据库访问,服务器被设置为将所有人分配到一个帐户中,因此所有DOMAIN\USERS
都映射到一个名为DOMAIN\MyDatabaseUser
的帐户中。
此用户在数据库/安全性/用户属性窗口中具有正确的权限。
我看了一个类似问题的答案,该问题涉及IIS应用程序池,但是该问题导致登录失败,我没有看到。
这是我的连接字符串:
<connectionStrings>
<add name="PMToolsEntities" connectionString="metadata=res://*/Models.PMToolsModel.csdl|res://*/Models.PMToolsModel.ssdl|res://*/Models.PMToolsModel.msl;
provider=System.Data.SqlClient;
provider connection string="
data source=SERVER\MySQLExpressInstance;initial catalog=MyDatabase;
integrated security=True;
MultipleActiveResultSets=True;
App=EntityFramework""
providerName="System.Data.EntityClient" />
我曾尝试将集成安全性设置为SSPI
,但得到的结果相同。我也为笑而完全删除了集成安全性设置,然后按预期方式出现登录失败(用户“”登录失败)。
这是MyDatabaseUser
的权限外观:
我基本上添加了所有东西,除了可以肯定的拒绝物品,但是我还没停下来。
我有一个连接到SQL Server的MVC应用程序(我使用ADO.NET Entity Framework 6.0进行数据库首次安装)。当我在笔记本电脑上调试时,它可以正确连接到SQL Server并呈现...
Here是最终帮助我的链接(还有一个耐心的IT专家,他让我在我通常无法访问的服务器上浏览)。