在一個程序中用到了
this.ttbHostName.Text=System.Net.Dns.GetHostName();
在開發機器上一切都正常,但是打包在測試機器上安裝後,一運行到這一句,就發生錯誤,錯誤信息如下:
錯誤訊息:
{System.Net.Dns 的型別初始設定式發生例外狀況。}
{System.Net.Sockets.Socket 的型別初始設定式發生例外狀況。}
{無法在通訊端上執行操作,因為系統緩衝區空間不足,或是佇列已滿。}
我試了好長時間才從一大堆代碼中确定是這句有問題,這句是我原以為最不會出問題的,用的System.dll是NET框架自帶的,GetHostName也是靜態方法.
有誰知道原因是什麼呀?

解决方案 »

  1.   

    很有可能是测试的机器没有指定dns,你可以自己指定一下Preferred DNS server,应该就好了。
      

  2.   

    有需要指定DNS嗎?
    我有做過測試,我有一台機器,沒有加入任何網絡(也當然就沒有DNS),我用System.Net.Dns.GetHostName()一樣可以取得本身這台機器的機器名呀.
    那如果在指定DNS要如何指定呀?
      

  3.   

    是不是其他代码连带的?---給了我很大的提示
    我做的是一個Remoting結構的三層式架構的程序.
    我又仔細看了一下錯誤提示:
    {引動過程的目標傳回例外狀況。}{System.Net.Dns 的型別初始設定式發生例外狀況。}{System.Net.Sockets.Socket 的型別初始設定式發生例外狀況。}{無法在通訊端上執行操作,因為系統緩衝區空間不足,或是佇列已滿。}
    發現Dns的錯誤是發生在Socket錯誤之後,我將這個程序的客戶端程序也做了一個安裝測試,發現客戶端在連Remoting服務器時一樣會出現這個一模一樣的問題,這樣我心里就有底了,因為我在客戶端沒有使用到任何Dns相關的代碼,所以我就猜想可以是這台測試機器本身網絡方面有問題,所以我又分別找了台XP和win2000profession的機器來做測試,發現全部正常,這說明就是那台測試機器本身有問題(至于是什麼問題,就沒清楚了.)還好客戶端可自由選擇是使用三層結構還是C/S結構,當選擇使用C/S結構時,完全不使用到REMOTING,也就不會出現這個問題了,基本上,在使用上不會出現那種使用不了的致命錯誤了.
      

  4.   

    我碰到类似的问题,把机器中的网络协议netbios删除就解决了。