我有一个web项目(C#Asp.Net、EF 4、MS SQL 2008和IIS 7),我需要在本地将其迁移到IIS 7(目前CASSINI可以正常工作).

在IIS本地,我的部署中有我的Default Web Site.my deploy和Default Web Site都在ASP池中.NETV4.0(查看图像设置)将池目标框架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)

Related question

更新: 您可以在有关此问题的资源中阅读,必须手动授予对MS SQL 2008的权限,就像Arft在他的回答中所解释的那样. 使用IIS 7.5和MS SQL 2008 R2,应该不需要手动设置权限.

推荐答案

似乎try 打开与SQL Server的连接失败.

您需要在SQL Server上添加登录名IIS APPPOOL\ASP.NET v4.0,并授予数据库权限.

在SSMS中,在服务器下展开Security,然后右键单击Logins并 Select "New Login.".

在New Login对话框中,输入应用程序池作为登录名,然后单击"OK".

在此处输入图像描述

然后,您可以右键单击应用程序池的登录, Select 属性,然后 Select "用户映射".判断相应的数据库和相应的角色.我认为您可以只 Select db_datareaderdb_datawriter,但是如果您通过EF执行存储过程,我认为您仍然需要授予执行存储过程的权限.您可以查看角色here的详细信息.

Asp.net相关问答推荐

Razor 页面客户端站点验证不起作用

Thread.CurrentPrincipal 错误地声称是匿名的

在正则表达式中允许 -(破折号)

使用进程外会话状态的 ASP.NET 应用程序中的 SQL Server 连接问题

某些黑客能否从用户那里窃取 Web 浏览器 cookie 并在网站上使用该名称登录?

部署后 ASP.Net Core Identity 登录状态丢失

如何通过 Asp.net 中的命令参数传递多个值?

在 Asp.net 中通过 Button 的 CommandArgument 传递多个参数

无法加载文件或程序集'System.Web.WebPages.Razor,版本 = 3.0.0.0

为什么我不能在 ASP.net MVC 中使用服务器控件?

为什么对 ASP.NET MVC 控制器的调用不执行 DelegatingHandler?

如何在同一解决方案中从 MVC 项目调试 Web API 项目

对于每个请求,RestClient 应该是单例还是新的

.Net Standard 2.0 类库是否有通用配置文件?

ASP.NET Core 2.0 为同一端点结合了 Cookie 和承载授权

回发后 Document.Ready() 不起作用

如何使用 ASP.NET 和 jQuery 返回 JSON

如何获取程序集的最后修改日期?

回发后运行javascript函数

禁用文本框的模型绑定