我正在尝试使用SQL Server 2008 R2在IIS 7.0上发布MVC 4.0项目。 我使用“Windows身份验证”,我的连接字符串是
<add name="PFTMEntities" connectionString="metadata=res://*/PFModel.csdl|res://*/PFModel.ssdl|res://*/PFModel.msl;provider=System.Data.SqlClient;provider connection string=" data source=DEW-PC\SQLEXPRESS;initial catalog=PFTM;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework;persist security info=True;"" providerName="System.Data.EntityClient" />
当我构建这个项目并从VS'12运行时,它不会给出任何异常,但是当我要从本地服务器发布这个项目时,它会给出以下异常
答案 0 :(得分:0)
取决于您的ASP.NET应用程序的三种方案
(由于性能不推荐)您的ASP.NET使用Windows身份验证,登录的用户可以访问MS SQL数据库
在这种情况下,您可以使用模拟使用与登录用户相同的凭据来连接到数据库
<configuration> <system.web> <authentication mode="Windows"/> <identity impersonate="true"/> ... </system.web> </configuration>
(推荐)您的ASP.NET作为NetworkService或具有有限权限的用户运行。您的Web服务器和数据库都在同一台计算机或同一个域
在MS SQL数据库上授予您的ASP.NET正在使用的帐户(例如NetworkService)login
权限
如果您的Web服务器和数据库位于不同的计算机上,您必须授予对Web服务器的登录和访问权限(使用以下命令)并将domainName\WebServerMachineName$
置于数据库角色
exec sp_grantlogin 'domainName\WebServerMachineName$' exec sp_grantdbaccess 'domainName\WebServerMachineName$'
(推荐)您的ASP.NET作为AppPoolIdentity运行,不得更改为其他帐户 OR 以上两者均不适用
您必须在MS SQL Server上启用混合身份验证,并切换为使用用户名和密码作为连接字符串
答案 1 :(得分:-1)
网站上的数据库配置有几个方面可能会导致问题。
服务器是使用Express版还是正式版的SQL Server? 您可以尝试将“data source = DEW-PC \ SQLEXPRESS”更改为“data source =。”。
SQL Server是否允许Network_Service访问PFTM数据库? 您需要在SQL Server 2008 R2中为Network_Service创建登录名,并在PFTM数据库中创建用户。