現在、短縮 URL の展開を行うために SQL Server 2008 udf を実装しようとしています。ほとんどの主要な URL 短縮サービスに対して非常にうまく機能しています。ただし、一見ランダムに「ハング」し、特定のドメイン (bit.ly など) に対する動作を拒否しますが、その後の他のサービス (tinyurl.com など) への呼び出しは引き続き成功します。
これは当初、URL 短縮プロバイダーによる何らかのブロックが原因であると考えていましたが、dbserver サービスを停止して再起動すると、後続のリクエストが成功するようになります。SQL サーバーが発信 http 接続を何らかの方法でプールしている可能性はありますか?
これがコードです...
using System;
using System.Data;
using System.Net;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString UrlExpander(string url)
{
// Set up the Webrequest
HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create(url);
try
{
// Set autoredirect off so the redirected URL will not be loaded
wr.AllowAutoRedirect = false;
// Get the response
HttpWebResponse wresp = (HttpWebResponse)wr.GetResponse();
return new SqlString(wresp.Headers["Location"].ToString());
}
catch (Exception ex)
{
wr.Abort();
throw ex;
}
}
};