2016-06-16 30 views
1

我們在我們公司運行用C#開發的Windows Forms應用程序,並且有一個問題讓我們頭疼。C#Windows窗體應用程序從映射的網絡驅動器運行緩慢

當我們運行從本地機器上的應用程序,在驅動器C:例如,應用程序加載和運行速度快。它主要是基於數據庫的,這意味着它對我們的MSSQL服務器做了很多查詢,並且在從本地驅動器運行時,它在不到1秒的時間內運行所有查詢。

如果我們從映射的網絡驅動器(不是UNC路徑,M:映射的驅動器)運行相同的應用程序,它加載速度很快,但查詢需要幾年才能完成,我們幾乎看不到結果。

ClickOnce是不是我們(由於是不受此處討論的原因)的選項,我們有跑得快,從相同的映射中號加載其他幾個第三方應用程序:驅動器。

我做了一些研究,我能找到的最接近的問題,這是一個: http://stackoverflow.duapp.com/questions/2554716/my-c-net-application-is-running-slower-when-the-exe-is-located-on-the-network

當我用鼠標右鍵單擊該應用程序有沒有「解除阻止」選項可用,這告訴我,有沒有附加輔助流到文件,它是由機器「信任」。

而且,我嘗試添加< loadFromRemoteSources啓用=「真」的config文件/ >,但它造成了應用程序的性能沒有變化爲止。

應用程序沒有簽名,並緩慢與調試版本和發佈應用程序的版本發生。

我們做錯了什麼?

PS:我仍然在試圖精確指出花費更長的時間來工作,確切的命令,但至今沒有運氣。

編輯:添加新的信息。看起來問題不在於網絡「本身」,而在於應用程序正在執行後臺任務並因爲從網絡運行而失敗。這種失敗並未包裹在try-catch塊中,並且阻止後臺任務正常返回,從而在應用程序響應上造成重大延遲。

這意味着這是我們的開發錯誤,而不是Windows錯誤。謝謝你的回答,我會投票結束這個問題。

+0

我投票結束這個問題作爲題外話,因爲真正的問題與問題無關,而是應用程序中的錯誤的副作用。這個問題沒有用,所以我會投票刪除它,如果我可以。 – Machado

回答

1

我最近發現了這種情況發生在應用中的情況。

在一體機,應用程序是閃電般快速的,在一個又一個,查詢了秒。

第二臺機器配置爲使用通過PPTP撥打的VPN。該VPN是automatically reconnecting whenever the computer got online - 即使該機器在公司網絡中(不需要VPN)。 VPN自動重撥招似乎永遠是非常有用的...直到我發現,連接到SQL服務器基本上總是通過VPN就因爲這個原因。手動立即斷開VPN的幫助:響應再次變快了。

我不認爲這是你的情況的明確解決方案,但這是導致幾乎無法接受的查詢緩慢的事情之一。我親眼觀察到了這一點。

+0

嗯。這確實是一個奇怪的問題。以防萬一我檢查了我的機器和其他用戶機器,並且沒有配置VPN。順便說一下,我們的應用程序運行在Windows 7 x64。我們所有的機器都是Windows 7. – Machado

+0

@Machado - 你可以抓住一些SQL分析器並測量查詢時間嗎?如果您發現「快速」和「慢速」情況下的響應沒有顯着差異,那麼這是一些網絡問題。提示:對於簡單的SQL Profiler(免費的,可移植的,獨立的exe,無需安裝):[Express Profiler](https://expressprofiler.codeplex.com/) – miroxlav

+0

我們有內置的MSSQL profiler,我們可以在這裏運行。我將運行一些測試併發布結果。 – Machado

相關問題