VB Net выдает исключение после сохранения на сетевой диск
Я пишу программу 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
? Однако у меня никогда не было проблем со ссылками. - Я в старшей школе. Может ли это быть связано с компьютерными ограничениями? К сожалению, я мало что могу предоставить по этому поводу. Но кажется маловероятным, что простой школьный файловый сервер может быть причиной такого поведения.
- Кроме того, это относится к другому обмену стека? Может супер пользователь?
Благодарю.
1 ответ
Похоже, вы столкнулись с проблемой безопасности доступа к коду. По умолчанию.Net Framework версий от 2.0 до 3.5 не будет доверять коду, находящемуся в общих файловых ресурсах, для выполнения..Net Framework версии 3.5sp1 вернул это значение к чему-то более разумному, но это все еще то, за чем вам нужно следить.
В качестве быстрого обходного пути вы можете написать пакетный файл, который копирует файл из общей сетевой папки в локальную систему, а затем запускает скопированную программу. Более надежный обходной путь - изменение параметров безопасности доступа к коду в системе, обычно на уровне групповой политики.