您好我正在寫一個WCF服務而不是託管在IIS上。它運行在我的服務器上作爲控制檯應用 我有一個由所提到的服務調用的靜態方法。在WCF調用方法加速http web請求
在這種方法中,我有異步Web請求發送短信。
有時會發生這樣的情況,即短信從未接收。經過一些調試後,我發現當我刪除異步調用時,Web請求有時會拋出一個異常,並顯示消息:'操作已超時'。當我嘗試在短時間內發送很多smss時,會發生這種情況。
但是,當我在瀏覽器中鍵入網絡請求的地址一切正常。 (我按刷新的時間,無論多快,我收到短信的次數),這是如何能夠與我所得到的。
到目前爲止,我已經
public static bool DoTheRequest(string number, string message)
{
try
{
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(string.Format("http://SomeURL?With={0}&something={1}", number, message));
myReq.BeginGetResponse(FinishWebRequest, myReq);
}
catch (Exception ex)
{
throw ex;
}
return true;
}
static void FinishWebRequest(IAsyncResult result)
{
HttpWebResponse response = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as HttpWebResponse;
}
編輯:
以及服務定義:
[OperationContract]
void TestSms(string number);
和實施:
public void TestSms(string number)
{
Utilities.DoTheRequest(number, "THIS IS A TEST");
}
請幫忙
Tnx爲答案。 例如我發送1短信,等待它收到,然後我發送第二,等待它收到,然後我發送第三和BOOM異常。在我的瀏覽器中,我按下了一秒鐘刷新(也許更少),並且效果很好(不等待到達)。 感謝您使用隊列的建議。但我正在爲我所能做的事情跳槽。你認爲這是可能的嗎?瀏覽器如何做到這一點? (chrome) – nzic
請問你爲什麼要等待它被接收?短信不能即時傳送,可能需要過多的時間才能到達。因此,我建議使用一個數據庫,其中可以以請求不可知的方式維護傳輸狀態。我的猜測是,在你的代碼中,線程池被阻塞等待收到短信,而在你的瀏覽器中,沒有人等待其他人。只是猜測,在這一點上。 –
你在我的代碼中誤解了我,我並不等待它。我在心理上等待它被接收。在上面的評論中,我發短信給自己,等待電話響起。 我的代碼是問題所以這是異步調用,我不在乎什麼是響應。 – nzic