小编典典

用户 'IIS APPPOOL\ASP.NET v4.0' 登录失败

all

我有一个 Web 项目(C# Asp.Net、EF 4、MS SQL 2008 和 IIS 7),我需要在本地将它迁移到 IIS 7(目前与 CASSINI
配合得很好)。

在 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 上手动授予权限,如 arift 在他的回答中解释的那样。使用 IIS 7.5 和 MS
SQL 2008 R2,不需要手动设置权限。


阅读 110

收藏
2022-03-14

共1个答案

小编典典

看起来它试图打开与 SQL Server 的连接失败。

您需要为 SQL Server 添加登录名IIS APPPOOL\ASP.NET v4.0并授予对数据库的权限。

在 SSMS 中,在服务器下,展开 Security,然后右键单击 Logins 并选择“New Login…”。

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

在此处输入图像描述

然后,您可以右键单击应用程序池的登录名,选择属性并选择“用户映射”。检查适当的数据库和适当的角色。我认为您可以只选择db_datareaderand
db_datawriter,但如果您通过 EF
执行此操作,我认为您仍然需要授予执行存储过程的权限。您可以在此处查看角色的详细信息。

2022-03-14