是否有從SQL Server 2012發送HTTP請求的普遍接受的標準方式?從SQL Server 2012或SQL CLR發送HTTP POST請求C#
我想要做的是使用遠程服務器來處理搜索查詢,然後將結果插回到SQL Server 2012數據庫中。遠程服務器提供了一個Web API,它接受帶有JSON內容的POST請求。
我有一個工作解決方案,但是需要將幾個程序集加載到SQL Server中。其中一些程序集並不完全支持(例如System.Net.Http.dll),並提供如下警告:
警告:Microsoft .NET Framework程序集「system.net.http,version = 4.0。 0.0,culture = neutral,publickeytoken = b03f5f7f11d50a3a,processorarchitecture = msil。'您正在註冊未在SQL Server託管環境中完全測試並且不受支持。將來,如果您升級或服務此程序集或.NET Framework,您的CLR集成例程可能會停止工作。請參閱SQL Server聯機叢書以獲取更多詳細信息。
我想知道是否有一個更好/更安全的方式,不需要加載所有這些程序集?我的存儲過程
CLR代碼:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void SendSearchRequestProcedure (string query, string table)
{
RunAsync(query,table).Wait();
}
static async Task RunAsync(string query, string table)
{
using (var client = new HttpClient())
{
HttpResponseMessage response;
client.BaseAddress = new Uri("http://localhost:9000/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var search = new Search() { Query = query, Table = table };
response = await client.PostAsJsonAsync("api/search/", search);
if (!response.IsSuccessStatusCode)
{
// handle error
}
}
}
你試過'WebClient'或'HttpWebRequest'而不是「HttpClient」 - 我不知道這些是否會起作用,但這些都是在.NET中進行HTTP調用的老式方法。 – 2015-02-10 15:40:00
謝謝!是的,我發佈了我的問題後試過,並且它在不加載其他程序集的情況下工作。雖然我很確定它以前不能正常工作..不完全確定我改變了什麼:o – dennis 2015-02-10 15:51:38