Sybase iAnywhere.Data.SQLAnywhere.SAException: DSN 数据库名称不存在

Sybase iAnywhere.Data.SQLAnywhere.SAException : DSN database name does not exist

我的应用程序在 MVC 4 中,Sql Anywhere 16 ODBC 使用 Entity framework。我使用 Visual studio 2010。要求是多租户,所以我在 Global.asax 上动态创建了连接字符串,一旦连接了主数据库,我就会在我的帐户控制器上创建基于用户的数据库的连接字符串。

申请运行好当我运行被visual studio。但是当我在 IIS 8.5 上发布此应用程序并在浏览器上加载应用程序时,它显示以下错误。

<ErrorType>System.Data.EntityException: The underlying provider failed
on Open. ---&gt; iAnywhere.Data.SQLAnywhere.SAException: DSN 'MainDB'
does not exist    at iAnywhere.Data.SQLAnywhere.SAConnection.Open()   
at
System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean
openCondition, DbConnection storeConnectionToOpen, DbConnection
originalConnection, String exceptionCode, String attemptedOperation,
Boolean&amp; closeStoreConnectionOnFailure)    --- End of inner
exception stack trace ---    at
System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean
openCondition, DbConnection storeConnectionToOpen, DbConnection
originalConnection, String exceptionCode, String attemptedOperation,
Boolean&amp; closeStoreConnectionOnFailure)    at
System.Data.EntityClient.EntityConnection.Open()    at
PDMSReporter.Controllers.AccountController.Login(LoginModel Login) in
E:\Projects\Triforce_PDM
Reporter\Latest_PDMSReporter\PDMSReporter\PDMSReporter\Controllers\AccountController.cs:line
56</ErrorType>

<ErrorDesc>The underlying provider failed on Open.</ErrorDesc>

我尝试了很多来解决这个问题。但没有找到任何合适的解决方案。

请帮我解决这个问题或建议 post 我可以解决的问题。

错误消息告诉您:"DSN 'MainDB' does not exist"。您的连接字符串正在使用客户端无法找到的 DSN。这可能是因为您正在创建用户 DSN 而不是系统 DSN - 如果您的客户端 运行 作为服务(即在 IIS 中),它无法读取用户 DSN。

如果您使用 dbdsn 实用程序创建 DSN,请确保使用 -ws 开关而不是 -w