Я пытаюсь установить соединение с базой данных 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()
Как я могу заставить свой код распознавать файл и, надеюсь, успешно подключиться?