我有一个Web项目(C#Asp.Net,EF 4,MS SQL 2008和IIS 7),我须要将其本地迁移到IIS 7(目前可在CASSINI上正常工做)。 sql
在IIS中,个人部署中拥有Default Web Site
。 个人部署和Default Web Site
都在ASP.NET v4.0池中(对于设置请看图片)在池目标Framework 4上做为个人Web项目。 当访问该站点时,浏览器不显示页面,而是容许浏览器下载页面。 数据库
我还有其余在IIS上本地运行的项目,它们没有任何问题(可是它们不使用实体框架)。 浏览器
使用事件记录器,我看到以下错误: 安全
Exception information: Exception type: EntityException Exception message: The underlying provider failed on Open. at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) Login failed for user 'IIS APPPOOL\ASP.NET v4.0'. at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.SqlClient.SqlConnection.Open() at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)
相关问题 服务器
更新:您能够在有关此问题的资源中阅读到,必须在MS SQL 2008上手动授予权限,这是他回答中的解释。 使用IIS 7.5和MS SQL 2008 R2,不须要手动设置权限。 网络
确保你有... 框架
Trusted_Connection=false;
在您的链接字符串中 ide
设置身份仅会使这项工做在个人页面中进行。 工具
您完成了@Teddy
建议的操做, 仍然遇到相同的错误吗? 网站
确保更改的是与虚拟目录而不是父服务器相对应的应用程序池的设置。 每一个虚拟目录都有其本身的AppPool,而且不会继承。
启动Visual Studio应用程序时,Cassini将以您本身的用户身份运行您的网站。 IIS将您的网站做为应用程序池标识运行。 除非授予应用程序池标识对数据库的访问权限,不然您将得到错误。
IIS引入了“应用程序池标识”以提升安全性。 您能够在默认的“应用程序池标识”下运行网站,或者使用本身的名称建立新的应用程序池,或者使用在用户账户(一般是域账户)下运行的具备本身的名称的新应用程序池。
在联网状况下(不在Azure中),可使新的应用程序池在Active Directory域用户账户下运行; 与计算机账户相比,我更喜欢此账户。 这样作能够提供精细的安全性和对包括数据库在内的网络资源的精细访问。 每一个网站都在不一样的应用程序池上运行(每一个网站均以其本身的域用户账户运行)。
在全部链接字符串中继续使用Windows Integrated Security。 在SQL Server中,将“域”用户添加为登陆名,并在每一个网站的基础上授予对数据库,表,SP等的权限。 例如,Website1使用的DB1具备User1的登陆名,由于Website1在App Pool上以User1身份运行。
从Visual Studio内置DB(例如LocalDB)和内置Web Server部署到生产环境的一个挑战来自如下事实:开发人员的用户SID及其ACL不能在安全的生产环境中使用。 Microsoft提供了用于部署的工具。 可是可怜可怜的开发人员,他们习惯了新的简单VS IDE中带有localDB和localWebServer的开箱即用的功能,由于这些工具对于该开发人员将很难使用,尤为是对于缺乏SysAdmin和DBAdmin支持或他们的专业知识。 可是,部署到Azure比上面提到的企业网络状况更容易。
我使用sql解决了这个问题,以下图。
右键单击db->属性->权限->查看服务器权限->,而后选择IIS APPPOOL\\ASP.NET v4.0
并授予权限。