Веб-приложение ASP.NET не может найти блок

Я развернул веб-приложение ASP.NET вчера вечером и меня, когда я проснулся этим утром, это было очень медленно и будет иногда просто бросать 'Сервис Недоступная' ошибка.

Я проверил Event Viewer, и это было заполнено этими ошибками:

Необработанное исключение произошло, и процесс был завершен.

Исключение: система. Время выполнения. Сериализация. SerializationException

Сообщение: Не удалось найти блок 'MonoTorrent, Version=0.80.0.0, Culture=neutral, PublicKeyToken=null'

Я озадачен, поскольку это работало отлично, когда я развернул его (MonoTorrent обязан получать количество seeders/leechers для определенного потока от средства отслеживания - это хорошо работало), но это больше не работает и каждый раз, когда код, который использует MonoTorrent, принимает участие, рабочий процесс просто отказывает.

MonoTorrent.dll находится в/bin/каталоге.


ОБНОВЛЕНИЕ 04.06.10: Я скомпилировал исходный код MonoTorrent в с остальной частью моего веб-приложения, но это все еще отказывает каждый раз, когда это использует MonoTorrent. Однако это теперь говорит, что это Unable to find assembly 'OpenPeer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. Здесь, OpenPeer является названием блока веб-приложения.

8
задан Community 8 February 2017 в 14:23
поделиться

8 ответов

Вот некоторые вещи, которые вы можете попробовать...

1.) Промойте каталог ASP.Net Temp Перезапустите IIS и переработайте Application pool.

2.) Убедитесь, что ваше веб-приложение работает в FULL-TRUST, если оно действительно нуждается в FULL-TRUST.

3.) Возьмите сборку, попробуйте использовать ее в другом приложении asp.net и запустите тестовое приложение на отдельном сервере. Это может помочь вам диагностировать проблему. Также попробуйте запустить тестовое приложение asp.net на том же сервере, но в отдельном пуле приложений.

4.) Убедитесь, что сайт IIS вашего приложения запущен под учетной записью пользователя с необходимыми правами безопасности. Попробуйте запустить приложение под учетной записью Administratotr в качестве пользователя.

EDIT-1

5.) Также проверьте, совпадает ли версия сборки с указанной в web.config. Если версия не совпадает, то вы можете сделать AssemblyBinding Redirection в web.config.

6.) Также попробуйте зарегистрировать сборку в GAC и посмотреть, правильно ли она загружается.

EDIT-2

7.) Попробуйте перенастроить поддержку ASP.NET на сервере или, возможно, поможет перенастройка времени выполнения фреймворка. Это может не быть верным решением, но, глядя на состояние проблемы, мы можем захотеть попробовать различные решения.

8.) Убедитесь, что вы не пропустили ни одного критического обновления вашей платформы windows server.

1
ответ дан 6 December 2019 в 01:39
поделиться

Попробуйте очистить временные файлы ASP.NET . Раньше для меня это решало некоторые странные проблемы.

В противном случае Fusion-logging может пролить свет.

ОБНОВЛЕНИЕ: @Charlie - Я не уверен, что делать с этими журналами ... похоже, что журнал с ошибками взят из другого домена приложения. Обратите внимание, что для AppBase установлено значение «file: /// c: / windows / system32 / inetsrv /», а для AppName - w3wp.exe.

Я почти уверен, что в средстве просмотра событий должен отображаться идентификатор приложения: LM / W3SVC / # / ROOT, если это также был домен приложения по умолчанию. На данный момент все, что у меня есть, - это случайные догадки.

  1. Я заметил, что вы используете x64 ... Возможно, MonoTorrent требует x86 ?
  2. Вы дважды проверили, что каталог является приложением IIS и настроен для правильной версии ASP. NET?
  3. Есть ли на этом сервере какое-нибудь другое приложение, использующее MonoTorrent? Может быть, служба WCF или что-то в этом роде? Я не уверен, где происходит сериализация ....
  4. Попробуйте подключить событие AssemblyResolve и загрузить его вручную.
  5. Можете ли вы воспроизвести на проявочной машине? Если нет, возможно, это неудачная установка FX. Удалите и переустановите.
  6. Может ли перезапуск, перезапуск или остановка / запуск AppPool временно решить проблему или вызвать ее появление?

Вы также можете ввести текст своего скриншота, чтобы получить немного любви от Google ....

1
ответ дан 6 December 2019 в 01:39
поделиться

Я обнаружил эту проблему и должен сделать все, что могу, например очистить временный файл, перезапустить сервер, удаляю и добавляю ссылку, а также перестраиваю решение. Однако я не могу решить эту проблему. Наконец, я перемещаю свой класс сущности (почти из них необходимо сериализовать) в новую папку, которую я добавил в проект, а затем эта проблема решена.

Этот метод мне подходит.

0
ответ дан 6 December 2019 в 01:39
поделиться

Часовой пояс сервера отличается от вашего часового пояса? У меня была эта проблема при развертывании файлов ресурсов, время компиляции было в будущем, поэтому они не загружались.

0
ответ дан 6 December 2019 в 01:39
поделиться

Я бы посоветовал настроить регулярное питание, вероятно, один раз в неделю в воскресенье вечером и т. Д. Для следующего,

  1. Удалить все временные файлы
  2. Удалить все ASP.NET временные файлы IIS
  3. Перезапустить сервер

Проблема в том, ASP.NET веб-приложения приводят к тому, что на диске остается много временных файлов из-за динамической компиляции regex, Серилиазационные сборки и т. Д., Такие временные вещи никогда не удаляются, и все больше и больше мусора начинает собираться во временных местах, ASP.NET идет все медленнее и медленнее, и наступает точка, когда дефрагментация диска, а также памяти достигает очень высокой точки, вещи начинают выходить из строя.

Никто не любит перезагружать сервер раз в неделю, но я помню, что у нас не было выбора, в ASP.NET 1.1 у нас была стабильная система после перезагрузки каждый день, в ASP.NET 2.0 и далее, мы хорошо, чтобы перезагрузка была запланирована один раз в неделю.

0
ответ дан 6 December 2019 в 01:39
поделиться

Мое предположение, что у вас много открытых, но не закрытых соединений. Я имею в виду, что соединения не возвращаются в пул. Это выглядит нормально, когда вы запускаете приложение, но через некоторое время в пуле остается только несколько сокетов, и оно работает медленно. Еще один момент - незакрытое соединение может держать DLL в памяти, не позволяя освободить обработчик. Попробуйте отладить уничтожение объекта.

-2
ответ дан 6 December 2019 в 01:39
поделиться

Я пытаюсь дать вам несколько идей - что мне делать, если бы я был на вашей позиции.

Прежде всего, я внимательно посмотрю на MonoTorrent.dll до того, как через несколько дней вы зададите свой вопрос, и я смотрю его снова сегодня. Я нашел и функцию загрузки dll. Мое первое мнение, что что-то связано с разрешениями.

Я надеюсь, что у вас есть доступ к серверу, верно?

Мои первые шаги заключаются в следующем:

Убедитесь, что ваш monotorrent.dll действительно имеет права доступа к каталогу bin , для чтения и выполнить вашим приложением asp.net. Иногда копия одной dll не получала разрешений на каталог, но выполняла свои собственные разрешения. Чтобы проверить, имеет ли ваша dll права, отличные от остальных, просто щелкните правой кнопкой мыши и выберите Свойства | Безопасность, затем перейдите в каталог bin и сделайте то же самое и сравните разрешения безопасности.Если они разные, снова примените разрешения каталога и убедитесь, что dll унаследована каталогом.

Мой второй шаг

Загрузите ProcessMonitor из sysinternals

http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

Запустите ProcessMonitor и попробуйте воссоздать ошибку , остановите его и проанализируйте, чтобы увидеть, где и почему DLL получает запрещенные разрешения для запуска. С помощью ProcessMonitor вы даже можете увидеть, есть ли какие-либо DLL, которые не могут быть найдены!

Я проверил библиотеки MonoTorrent и не обнаружил ничего необычного. У него есть вызовы kerner32.dll, и он использует небезопасный код для запуска, хорошо, ничего особенного.

Итак, если вы сделаете эти 2 шага и дадите мне обратную связь, возможно, я смогу пойти дальше. (если вы не решите и то, что найдете)

0
ответ дан 6 December 2019 в 01:39
поделиться

Я знаю, что это просто, но однажды у меня была эта проблема, потому что у меня был проект веб-приложения, содержащий папку

    References

, и я просто скопировал свои файлы в папка

    Bin

в любом веб-приложении .net в окнах Свойства проекта доступна вкладка Путь ссылки , которая по умолчанию не должна включаться в нее. отметьте этот параметр, а также вкладку Сборка в окне свойств проекта , который Выходной путь будет таким же, как bin \

-2
ответ дан 6 December 2019 в 01:39
поделиться
Другие вопросы по тегам:

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