iis连接mysql错误_解决使用IIS时连接数据库失败的问题-Go语言中文社区

问题描述

在IIS上发布自己的应用程序时,有时候会遇到如下所示问题

System.Data.SqlClient.SqlException: 用户 'IIS APPPOOLDefaultAppPool' 登录失败。

在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)

在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)

在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)

在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)

在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)

在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)

在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)

在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)

在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)

在 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)

在 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)

在 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)

在 System.Data.SqlClient.SqlConnection.Open()

那是因为IIS不能访问数据库,我们可以在数据库和IIS两边做相应的设置解决这个问题。

数据库端(本人使用的是Mircosoft SQL Server 2008 R2)

首先选择《安全性》中的《登录名》,右键《新建登录名》

ca3889f738345e63e3cee443103f0972.png

其次,点击搜索

ac8b2ff561dea3a7d5796eec2368ac01.png

点击高级

9b1f8e2ca00372b0c5f9eb495a4e1d5d.png

点击立即搜索,找到Network Service,也可以选择Service,点击确定

b775ac410a1a8bb29b1f630ad7bf9246.png

在《服务器角色》选择public和sysadmin,点击确定

08ef713cf2bdb96c3b7b1dee572d18a2.png

IIS端

点击

9a7f64618b554f32fec5a452697ba233.png,点击

46ffd586a02da2c308023c5e90ea4197.png

887748ab60b0f341a5a35179daf97964.png

在进程模型中,把标识改为NetworkService,点击确定

11246a5969927f287315365bd1df3d5a.png

之后,这个问题就解决了。


版权声明:本文为weixin_36333534原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。