他の Web サイトに値を投稿し、そのページからの応答を HTML ドキュメントとして取得できる Web ページを作成しました。他の Web サイトから応答を受け取った後、HTMLAgilityPack を使用して解析し、必要なデータを取得しています。このデータは、SQL Server データベースに保存されます。このすべてのシナリオは開発環境では正常に機能していますが、サーバーにデプロイした後、上記のエラーが発生しています。
これは、他のWebサイトからデータを取得し、解析して保存する機能です。
public static string FetchDataFromWebsite(string uId)
{
string url = "http://demourl.aspx";
var encoding = new ASCIIEncoding();
string postData = "some data to post";
byte[] data = encoding.GetBytes(postData);
var myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2";
myRequest.ContentLength = data.Length;
var newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
var response = myRequest.GetResponse();
var responseStream = response.GetResponseStream();
var responseReader = new StreamReader(responseStream);
var result = responseReader.ReadToEnd();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(result);
var table = doc.DocumentNode.SelectSingleNode("//*[@id='GridView1']");
if (table != null)
{
var tr = table.SelectSingleNode("//tr[2]");
string[] trData = new string[12];
int rowCount = 0;
foreach (HtmlNode td in tr.SelectNodes("//td"))
{
rowCount++;
if (rowCount > 3 && rowCount < 16)
{
trData[rowCount - 4] = td.InnerText;
}
if (rowCount >= 16)
{
break;
}
}
saveDataInDatabase(trData);
return "Cheers! data saved.";
}
else
{
var span = doc.DocumentNode.SelectSingleNode("//span[@id='lbmessage']");
string message = span.InnerText;
InsertErrorLog(uId, message);
return "No data found";
}
}
私が何か間違ったことをしていると、このエラーが発生します。上記のエラーは、一部のサーバー設定が原因である可能性があります。設定の変更を手伝ってください。ちなみにサーバーはIIS7.5、サーバーOSはWindows server 2008 R2です。
あなたのコメントを待っています。