我正在尝试使用Sap.Data.SQLAnywhere建立与Sybase数据库的连接。使用SQL Anywhere客户端可以从工作站完美地运行,但是在Azure函数中运行代码时遇到了一些麻烦。
这是我的简单代码的开头:
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using System.Data.SqlClient;
using Microsoft.Extensions.Logging;
using System;
using Sap.Data.SQLAnywhere;
namespace SBCTest
{
public static class SybaseTest
{
static string DB_CS_SOURCE = "Host=myIP;UID=myUID;PWD=myPWD;Data Source=myDb;"; static int bulkSize = 5000;
[FunctionName("SybaseTest")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, ILogger log)
{
try
{
var dbSourceCon = new SAConnection()
dbSourceCon.ConnectionString = DB_CS_SOURCE;
dbSourceCon.Open();
//etc... etc...
我面临的问题,似乎无法解决,是运行该应用程序时出现的以下错误:
[Error] System.TypeInitializationException: The type initializer for 'Sap.Data.SQLAnywhere.SAConnection' threw an exception. ---> Sap.Data.SQLAnywhere.SAException: Cannot find the language resource file (dblgen17.dll).
at Sap.Data.SQLAnywhere.SAUnmanagedDll..ctor()
at Sap.Data.SQLAnywhere.SAUnmanagedDll.get_Instance()
at Sap.Data.SQLAnywhere.SAConnection..cctor()
--- End of inner exception stack trace ---
at Sap.Data.SQLAnywhere.SAConnection..ctor()
at SBCTest.SybaseTest.<Run>d__3.MoveNext()
dblgen17.dll包含在here中的SAP SQL Anywhere数据库客户端中,并且已添加到我的项目中,并且Build Action设置为无,并且复制到输出目录设置为始终复制。
“丢失的文件” dblgen17.dll可以按预期与Sap.Data.SQLAnywhere.v4.5.dll]一起在/ site / wwwroot / bin中找到。 >。
为什么它仍然说它丢失了?我的Google结果表明,它可能与PATH变量有关,但是由于这是Azure函数,因此我不确定在此做什么。我还注意到了另外一种奇怪的行为,如下所述。
有时,在重新发布未更改的代码时,偶尔也会突然收到此错误消息:
[Error] Sap.Data.SQLAnywhere.SAException (0x80004005) at Sap.Data.SQLAnywhere.SAConnection.Open() at SBCTest.SybaseTest.<Run>d__3.MoveNext()
如何使我的代码识别文件,并希望成功连接?
我正在尝试使用Sap.Data.SQLAnywhere建立与Sybase数据库的连接。使用SQL Anywhere客户端可以从工作站完美地运行,但是在运行代码时遇到了一些麻烦...
就我而言,它是通过重置IIS解决的,可以使用iisreset