Я видел кое-что о необходимости иметь сборку, доступную для типа первого аргумента, переданного функции. Я думаю, что это так, я не могу понять, что мне не хватает.
Этот код находится в сервисе. Я запускал службу под учетной записью пользователя «СЕТЕВЫЕ СЛУЖБЫ», когда я изменил учетную запись на учетную запись сеанса, в который я вошел, она работала нормально. Но в чем разница и как я могу заставить его работать для пользователя СЕТЕВЫХ УСЛУГ.





Сетевая служба - это встроенная учетная запись, которая имеет очень ограниченный доступ (по уважительной причине) к ресурсам. Вероятно, вам не следует его менять, потому что вы откроете свой сайт для других потенциальных уязвимостей.
Если вам это абсолютно необходимо, см. здесь, чтобы узнать, как настроить его для доступа к другим ресурсам.
Наконец-то я нашел ответ: похоже, что тип, присвоенный ApplicationHost.CreateApplicationHost (), должен быть в сборке, расположенной в GAC. Просто и глупо :)
проголосовали против, потому что сборка не обязательно должна быть в GAC
Действительно, ставить сборку в GAC не нужно. Это связано с привязкой к сборке. Включите Fusion Logging, и вы точно увидите, где что-то пошло не так
Я думаю, что это более тесно связано с учетной записью сетевых служб или безопасностью доступа для кода и не имеет ничего общего с GAC. Я использую CreateApplicationHost () для создания хоста ASP.Net в проекте MS Test, и он работает как чемпион. Тип, который я использую, не входит в сборку, развернутую в GAC, или даже не имеет строго определенного имени (он определен в TestProject).
Вы должны любить такие несоответствия ... они делают жизнь интересной.
У меня тоже была эта проблема. Я думаю, что среда выполнения пытается загрузить сборку, содержащую тип, переданный в качестве первого аргумента CreateApplicationHost, и не может ее найти
По какой-то странной причине это сработало, когда я создал каталог bin в моем физическом каталоге (третий аргумент), содержащий exe или сборку, которая содержит тип, который он пытался загрузить.
Я не знаю, почему он сначала не смотрит в рабочий каталог ...
скопируйте свой двоичный файл в папку bin вашего веб-приложения, это также исправит.
Кстати, на странице это есть немного больше информации по этой теме и возможный способ решения проблемы GAC и копирования вашей сборки в папку bin. На данный момент странице несколько лет, но она все еще кажется актуальной.
Я не мог заставить это работать ни в .NET2, ни в Windows 2008 (64-разрядная версия, но я не думаю, что это имело значение). Это работало, когда мой пользователь был локальным администратором, но я не хочу, чтобы мои службы работали с повышенными привилегиями. Я искал все выше и ниже и, наконец, понял это (без добавления сборки в GAC, что одинаково плохо для меня): Создайте файл web.config для моего собственного сайта, который устанавливает папку bin для проверки. Раньше у меня не было файла web.config, поскольку все мои сайты обрабатывались кодом. Вот как теперь выглядит мой конфигурационный файл:
<configuration>
<runtime>
<assemblyBinding xmlns = "urn:schemas-microsoft-com:asm.v1">
<probing privatePath = "bin"/>
</assemblyBinding>
</runtime>
</configuration>
Здорово. Вы нашли это в какой-то документации, которую я могу посмотреть ... или это было методом проб и ошибок?