Azure функции: невозможно загрузить DLL 'sni.dll' или одну из ее зависимостей: указанный модуль не найден. (0x8007007e) - PullRequest
0 голосов
/ 04 марта 2020

Попытка запустить эту Azure функцию на портале Azure, но не с приведенной выше ошибкой заголовка:

    using System;
    using System.IO;
    using System.Net;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Azure.WebJobs;
    using Microsoft.AspNetCore.Http;
    using Microsoft.Extensions.Logging;
    using Microsoft.Extensions.Primitives;
    using Newtonsoft.Json;
    using System.Data.SqlClient;

    public static string Run(HttpRequest req, ILogger log)
    {
        string name="dbconn";
        string conStr = System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);

        if (string.IsNullOrEmpty(conStr)) // Azure Functions App Service naming convention
            conStr = System.Environment.GetEnvironmentVariable($"SQLCONNSTR_{name}", EnvironmentVariableTarget.Process);
        using (SqlConnection conn = new SqlConnection(conStr))
            {
                conn.Open();

            }
        return conStr;

Я добавил в базу данных AzureSQL ADO. NET ConnectionString: enter image description here Поиск в Google показывает, что эта проблема в основном возникает для локальных систем в отношении System.Data.SqlClient. Но у меня проблема на портале azure, я не публикуюсь с VS, поэтому не знаю, как это исправить. Помощь действительно приветствуется.

В случае, если я также пытался изменить System.Data.SqlClient для Microsoft.Data.SqlClient, но не могу скомпилировать: имя типа или пространства имен «Данные» не существует в пространстве имен «Microsoft '(вам не хватает ссылки на сборку?)

В Azure cli я вижу. net core - v 2.2.402 и не уверен, что обновление до 3.1 может быть проблемой? Я могу обновить до. Net Core 3.1 на windows 10 p c, но Azure cli продолжает показывать. net core 2.2.402. Я разместил вопрос в stackoverflow вопрос, как также обновить среду azure.

Спасибо большое за вашу помощь, ура!

1 Ответ

1 голос
/ 04 марта 2020

Похоже, что-то не так со строкой подключения. Убедитесь, что вы используете что-то похожее на это:

Server=tcp:{your_server}.database.windows.net,1433;Initial Catalog={your_database};Persist Security Info=False;User ID={your_user};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

Что касается использования Microsoft.Data.SqlClient, который является рекомендуемой библиотекой, вам необходимо сначала добавить его в решение:

dotnet add package Microsoft.Net.SqlClient
...