2009-06-16 53 views
0

我有一個ASP.NET C#3.5 Web應用程序,它將另一個ASP.NET Web服務用作Web引用。 Web服務內置於某些專有硬件設備中。問題是,該設備一直有麻煩,不能訪問。我的Web應用程序正在遭受這種痛苦,因爲它需要花費一分鐘才能加載。它確實加載,但不能接受。Webservice不可用

該服務是在try catch塊實例化也不例外正在拋出,但輸出窗口顯示:

型「System.Net.WebException」的第一次機會異常出現在System.dll中

我知道有一個更好的方法來處理這個問題,但我畫的是空白。

任何幫助表示讚賞。

更新:仍在尋找如何處理無法訪問而不會影響網站的web服務的答案。


把它拆開後,我發現了一個例外。這是一個標準的「無法連接」異常。現在的問題是超時,我已經嘗試在System.Web - > Pages屬性下的web.config中將asyncTimeout設置爲5000。它仍然需要花費20秒才能拋出異常。有任何想法嗎?

回答

1

簡單的解決方案,在頁面加載後使用JavaScript輪詢服務。

0

沒有關於服務的頻率/使用情況以及沒有看到任何代碼的詳細信息,繼承人有一兩個想法。

它最有可能的網絡方法在這個硬件上給出了錯誤,所以我會追求你有任何支持選項(如果有的話),但只是爲了咯咯笑,先試試看看它是否有幫助....

我注意到,一些人在網上說,他們能夠通過請求對象的保持活動設置爲來解決這個問題(在他們的情況下),讓你的方式不小心使用了舊的(過時)連接到服務。您可能試圖「保持活躍」,但網絡服務器超時了您的連接。值得一試...

祝你好運!

+0

有壞代碼顯示,我知道問題。該服務不可用。我正在尋找更多如何處理服務,以不影響我的應用程序。基本上我想在可用時使用該服務,並且在沒有它的情況下優雅地降級。 希望這可以清除一些事情。 感謝您的幫助 – 2009-06-16 02:50:00

0

除了上面的內容,我還會使用http調試器(如fiddler2)來更好地瞭解電線上發生了什麼。

+0

好點,提琴手很棒 – curtisk 2009-06-16 02:48:20

1

如果你看到了「第一次機會異常」,但你的異常處理程序沒有得到它,這意味着異常在其他地方被處理(吞下,被異常處理程序等使用)。已經處理了這個異常,並且你不需要關心你的代碼。或者,也許你在代碼中的某個地方留下了一些異常。

你應該考慮在你的web請求中使用超時。