我不学习没人要 2023-11-21 08:58 采纳率: 33.3%
浏览 23
已结题

C#项目发布、部署的坑

问题描述
C#项目在本地可以正常访问数据库,部署到IIS上无法访问数据。
环境
数据库不是本地,使用Access数据管理
解决问题
项目部署在IIS上能正常访问数据


System.Data.OleDb.OleDbException (0x80004005): Microsoft Jet 数据库引擎打不开文件'\\192.168.1.19\中心\成绩表.mdb'。  它已经被别的用户以独占方式打开,或没有查看数据的权限。
   在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
   在 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   在 System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   在 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   在 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.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   在 System.Data.OleDb.OleDbConnection.Open()

权限,数据库文件,以及Temp的权限都已经给了。独占,项目在vs中可以正常访问数据库;部署在IIS上不行

  • 写回答

13条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2023-11-21 10:16
    关注

    大概率,ip限制或者防火墙之类的原因。
    如果连不上,那么可以看看具体连不上的报错信息。

    以下是人工智能:
    问题出现在部署到 IIS 上后无法访问数据库,这可能涉及到一些权限、连接字符串或者 IIS 配置的问题。以下是一些建议:

    1. 权限问题: 确保 IIS 应用程序池的身份验证用户(通常是 IIS AppPool\YourAppPoolName)具有足够的权限访问数据库。在数据库服务器上设置对应的数据库访问权限,包括读取、写入等权限。

    2. 连接字符串: 确保在项目中使用的数据库连接字符串是正确的。连接字符串中的服务器地址、数据库名称、用户名和密码等信息都需要检查是否与数据库服务器匹配。

    3. 32位/64位兼容性: 如果你的应用程序是以 32 位应用程序池运行的,而数据库驱动程序是 64 位的,或者反之,可能会导致连接问题。确保应用程序池和数据库驱动程序的位数匹配。

    4. IIS 配置: 在 IIS 管理器中,确保你的应用程序池已启用 32 位应用程序。选择应用程序池 -> 右键点击 -> 高级设置 -> 启用 32 位应用程序。

    5. 检查错误日志: 在 IIS 上查看错误日志,它可能提供有关连接问题的更多详细信息。你可以在 IIS 日志或 Windows 事件查看器中查找相关的错误信息。

    6. ODBC 驱动: 如果你的 Access 数据库是通过 ODBC 连接的,确保在 IIS 上也安装了相应版本的 ODBC 驱动程序,并且连接字符串配置正确。

    7. Windows身份验证: 如果你的数据库使用 Windows 身份验证,确保 IIS 应用程序池的身份验证用户具有足够的权限。你可能需要使用连接字符串中的 Trusted_ConnectionIntegrated Security 选项。

    8. Firewall 和网络问题: 确保数据库服务器的防火墙允许来自 IIS 服务器的连接。另外,检查网络是否正常,确保能够从 IIS 服务器访问数据库服务器。

    通过逐一检查上述问题,你应该能够找到导致部署到 IIS 上无法访问数据库的具体原因。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(12条)

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月21日
  • 修改了问题 11月21日
  • 修改了问题 11月21日
  • 展开全部