Как использовать HttpClient (или любой другой) в проекте базы данных SQL Server в .NET для вызова внешней службы? - PullRequest
0 голосов
/ 15 июня 2019

Я просто пытаюсь выполнить хранимую процедуру CLR из SQL Server 18, которая нацелена на проект базы данных, созданный в Visual Studio 2019, отправив параметр (URL), чтобы попытаться выполнить его в VS,но когда объект WebRequest получает мои параметры, кажется, что WebRequest ничего не делает, и мне нужно вызвать этот URL из другого проекта.

Я попытался использовать класс библиотеки в другом проекте, поместив тудаобъект HttpClient, и он успешно работает.Еще я попробовал создать класс библиотеки в проекте базы данных и попытаться соединить их, чтобы попытаться вызвать метод, который, как я знаю, работает (с объектом HttpClient), но ни один из них не позволяет мне ссылаться на него.* SQL SERVER операторы:

ALTER DATABASE SellerCenter SET TRUSTWORTHY ON
------------------------------------------------
EXEC sp_configure 'clr enabled', 1
GO
    RECONFIGURE
GO
--------------------------------
CREATE ASSEMBLY [CLR_GetFeed]
    FROM 'D:\CLR_SPs\SQL_CLRs.dll'
    WITH PERMISSION_SET = EXTERNAL_ACCESS
GO
-----------------------------
CREATE PROCEDURE sp_GetFeed
    @url nvarchar(2000)
AS
    EXTERNAL NAME CLR_GetFeed.StoredProcedures.CLR_GetFeed
GO
-------------------------------------------------------------
EXECUTE sp_GetFeed @url = 'https://localhost:44325/api/order'

.NET код:

public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void CLR_GetFeed (SqlString url)
    {
        SqlContext.Pipe.Send(string.Format($"[{url.ToString()}]"));
        WebRequest request = WebRequest.Create(url.ToString());
    }
}

Здесь, когда я пытаюсь соединить вышеуказанный метод с этим более низким, но было невозможнопопытаться увидеть CLR_GetFeed (выше) с помощью GetFeedRedirect (ниже):

public class RedirectLinks
    {
        private static readonly HttpClient client = new HttpClient();

        public static async System.Threading.Tasks.Task<string> GetFeedRedirect()
        {
            string responseString = await client.GetStringAsync("https://localhost:44325/api/order");

            return responseString;
        }
    }

Когда я выполняю SP (sp_GetFeed) с параметром (URL), он запускается успешно и показывает мне URL-адрес в видесообщение в части «Сообщения» в SQL Server, но никогда не выполняет URL-адрес, я имею в виду, мне нужно вызвать внешнюю службу, которая нацелена на API.

...