2014-01-13 103 views
0

我寫這應該訪問的API,並下載一些數據的VB.net程序後拋出異常。但即使只是基礎知識,我也遇到了一些麻煩。我有這個簡單的程序:VB網保存到網絡驅動器

Public Class Form1 

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Dim webClient As New System.Net.WebClient 
    Dim result As String = webClient.DownloadString("http://www.myexternalip.com/raw") 

    Debug.WriteLine(result) 
    End Sub 
End Class 

正如預期的那樣,程序運行,並打印我的外部IP - 但只是如果我不保存程序!一旦我保存程序來我們學校的網絡文件服務器,程序停止工作:

A first chance exception of type 'System.Net.WebException' occurred in System.dll 

程序本身正是相同。然而,突然之間,將程序保存到我的網絡文件夾後,就會中斷。我以前從未遇到過這個問題,並且在過去6個月中一直使用網絡文件服務器來執行VB.net程序。

不令人吃驚,如果我做一個新的程序(再次,不節能)和複製並粘貼「破」代碼粘貼到新程序,它運行良好。然後我保存它並引發異常。

我的問題:

  • 這是否有參考呢?可能該程序沒有找到對System.Net的引用?不過,我從來沒有與之前的參考問題。
  • 我在一所高中。這可能與電腦限制有關嗎?不幸的是,我很少提供這方面的信息。但是,簡單的學校文件服務器似乎不太可能導致這種行爲。
  • 此外,這是否屬於另一個堆棧交換?也許超級用戶?

謝謝。

+0

它什麼時候拋出異常,在運行時或設計時?你是否從網絡共享執行程序?如果是這樣,你有[授予信任](http://msdn.microsoft.com/en-us/library/cc713717(v = vs.110).aspx)本地計算機上的可執行文件? –

+0

網絡驅動器只是一個文件服務器。該程序(就我而言)仍然從我的本地計算機上運行。在'DownloadString'行執行期間發生異常(子行的第2行)。 – baum

+0

您使用的是什麼版本的.Net? –

回答

2

這聽起來像你正在運行到一個問題與Code Access Security。默認情況下,.Net Framework版本2.0到3.5將不會信任位於文件共享上的代碼用於執行。 .Net Framework版本3.5sp1將其設置回更理智的狀態,但仍然需要注意。

你可以做一個快速的變通辦法是編寫一個批處理文件,將文件從網絡共享複製到本地系統中的文件,然後揭開序幕複製的程序。更強大的解決方法是更改​​系統上的代碼訪問安全設置,通常在組策略級別。

+0

儘管我使用.net 4(Visual Studio 2010)... – baum