我正在编写一个VB.net程序,该程序应该访问API并下载一些数据。但即使只是基础知识,我也遇到了一些麻烦。我有这个简单的程序:
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 :(得分:2)
这听起来好像你遇到了Code Access Security的问题。默认情况下,.Net Framework版本2.0到3.5不会信任位于文件共享上的代码以供执行。 .Net Framework版本3.5sp1将其设置为更加理智,但它仍然是您需要注意的东西。
作为快速解决方法,您可以执行的操作是编写批处理文件,将文件从网络共享复制到本地系统,然后启动复制的程序。更强大的解决方法是更改系统上的代码访问安全设置,通常是在组策略级别。