是否有从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