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 вернул это значение к чему-то более разумному, но это все еще то, за чем вам нужно следить.

В качестве быстрого обходного пути вы можете написать пакетный файл, который копирует файл из общей сетевой папки в локальную систему, а затем запускает скопированную программу. Более надежный обходной путь - изменение параметров безопасности доступа к коду в системе, обычно на уровне групповой политики.

Другие вопросы по тегам