Исполняемый файл.NET не загрузит блоки, на которые ссылаются, при запуске с \\localhost\xyz

Мой исполняемый файл.NET abc.exe ссылки несколько блоков. Одного из них называют xyz.core.exe. Я испытываю затруднения, заставляя это работать, когда это запускается с сетевого местоположения, указанного через сетевое имя с путем такой как \\localhost\xyz\abc.exe. Это хорошо работает, если я монтирую названную букву сетевого диска Z: на \\localhost\xyz и если я запускаюсь Z:\abc.exe.

.NET, кажется, становится перепутанной при попытке загрузиться xyz.core.exe блок от доли. Это бросает a System.IO.FileNotFoundException исключение со следующим сплавом регистрирует информацию:

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable  \\localhost\xyz\abc.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = Workstation\arnaud
LOG: DisplayName = xyz.core, Version=2.5.2.1001, Culture=neutral, PublicKeyToken=...
(Fully-specified)
LOG: Appbase = file://localhost/xyz/
LOG: Initial PrivatePath = NULL
Calling assembly : abc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=...
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from     C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: xyz.core, Version=2.5.2.1001, Culture=neutral, PublicKeyToken=...
LOG: Attempting download of new URL file://localhost/xyz/xyz.core.DLL.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core/xyz.core.DLL.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core.EXE.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core/xyz.core.EXE.

Смотря на это через другой угол с Монитором Процесса, я вижу несколько попыток получить доступ на моем локальном диске со следующими путями:

C:\xyz\xyz.core.dll
C:\xyz\xyz.core\xyz.core.dll
C:\xyz\xyz.core.exe
C:\xyz\xyz.core\xyz.core.exe

как будто загрузчик неправильно понял намерение загрузки из сетевого ресурса и отбросил \\localhost использовать C: вместо этого. Проблема, кажется, не связана с настройками безопасности (я никогда не смешивал с CASPOL на моей машине), и я использую.NET 3,5 SP1, который позволяет исполняемым файлам быть запущенными с доли.

И то, что запуск программы посредством эквивалентных работ буквы подключенного сетевого диска должен подтвердить, что это не проблема безопасности.

Проблема не связана с тем, что ссылка к блоку EXE также, поскольку это производит тот же вид ошибок загрузки со ссылками на плоскость блоки DLL.

Какие-либо идеи того, какова могла быть причина этой проблемы загрузки? Кто-либо еще столкнулся с такой ситуацией?

6
задан Pierre Arnaud 29 January 2010 в 21:34
поделиться

2 ответа

Я не могу объяснить "C: \ xyz \ xyz.core" .dll "(разве что из любопытства), но остальное - именно то, что я ожидал.

Похоже, все это связано с безопасностью кодового доступа. До недавнего времени вам нужно было использовать «caspol» для настройки CAS, чтобы вы могли запускать exe из любого типа сетевой папки. Это было изменено (либо .NET 3.5, либо .NET 3.5 SP1) таким образом, что сопоставлены общих ресурсов («f:» и т. Д.) действительно получают разрешение на выполнение, а общие ресурсы UNC - нет.

Вы можете использовать «caspol» для предоставления доступа к UNC ( как это ), но IMO это гораздо лучший вариант для перехода на развертывание ClickOnce. Это может по-прежнему быть через общий сетевой ресурс, но он включает дополнительную информацию публикации, которая позволяет среде выполнения монтировать его. Я полагаю , что его также можно использовать для развертывания, чтобы он работал в автономном режиме (когда сеть недоступна), но обновлялся автоматически из общего ресурса, когда это возможно. Я знаю, что это работает для развертывания http - я полагаю работает для сети). IDE представляет это под видом «публикации», и все это делается примерно за 5 щелчков мышью.

2
ответ дан 17 December 2019 в 20:31
поделиться

Я сбит с толку - если вы используете localhost, он должен перейти на локальный жесткий диск.

Вы пытаетесь переназначить локальный хост в другое место? Если это так, это может быть причиной проблем - попробуйте использовать другое имя

0
ответ дан 17 December 2019 в 20:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: