Sap.Data.SQLAnywhere.SAException: не удается найти файл языкового ресурса (dblgen17.dll) при подключении к Sybase SQL Anywhere с использованием .NET - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь установить соединение с базой данных Sybase, используя Sap.Data.SQLAnywhere . Использование клиента 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 включен в Клиент базы данных SAP SQL Anywhere найдено здесь и добавлен в мой проект, с Действие построения , установленное на Нет , и Копирование в выходной каталог , установленное на Копировать всегда .

«Пропущенный файл» dblgen17.dll можно найти в / site / wwwroot / bin после публикации, как и ожидалось, вместе с Sap.Data.SQLAnywhere. v4.5.dll .

Почему до сих пор говорится, что он отсутствует? Мои результаты Google указывают на то, что это может быть связано с переменной PATH, но, поскольку это функция Azure, я не уверен, что здесь делать. Я также отметил дополнительное, странное поведение, описанное ниже.

Иногда, время от времени при повторной публикации неизмененного кода, я также могу внезапно получить это сообщение об ошибке:

[Error] Sap.Data.SQLAnywhere.SAException (0x80004005)
at Sap.Data.SQLAnywhere.SAConnection.Open()
at SBCTest.SybaseTest.<Run>d__3.MoveNext()

Как я могу заставить свой код распознавать файл и, надеюсь, успешно подключиться?

...