Я развернул веб-приложение 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 является названием блока веб-приложения.
Вот некоторые вещи, которые вы можете попробовать...
1.) Промойте каталог ASP.Net Temp Перезапустите IIS и переработайте Application pool.
2.) Убедитесь, что ваше веб-приложение работает в FULL-TRUST, если оно действительно нуждается в FULL-TRUST.
3.) Возьмите сборку, попробуйте использовать ее в другом приложении asp.net и запустите тестовое приложение на отдельном сервере. Это может помочь вам диагностировать проблему. Также попробуйте запустить тестовое приложение asp.net на том же сервере, но в отдельном пуле приложений.
4.) Убедитесь, что сайт IIS вашего приложения запущен под учетной записью пользователя с необходимыми правами безопасности. Попробуйте запустить приложение под учетной записью Administratotr в качестве пользователя.
5.) Также проверьте, совпадает ли версия сборки с указанной в web.config. Если версия не совпадает, то вы можете сделать AssemblyBinding Redirection в web.config.
6.) Также попробуйте зарегистрировать сборку в GAC и посмотреть, правильно ли она загружается.
7.) Попробуйте перенастроить поддержку ASP.NET на сервере или, возможно, поможет перенастройка времени выполнения фреймворка. Это может не быть верным решением, но, глядя на состояние проблемы, мы можем захотеть попробовать различные решения.
8.) Убедитесь, что вы не пропустили ни одного критического обновления вашей платформы windows server.
Попробуйте очистить временные файлы ASP.NET . Раньше для меня это решало некоторые странные проблемы.
В противном случае Fusion-logging может пролить свет.
ОБНОВЛЕНИЕ: @Charlie - Я не уверен, что делать с этими журналами ... похоже, что журнал с ошибками взят из другого домена приложения. Обратите внимание, что для AppBase установлено значение «file: /// c: / windows / system32 / inetsrv /», а для AppName - w3wp.exe.
Я почти уверен, что в средстве просмотра событий должен отображаться идентификатор приложения: LM / W3SVC / # / ROOT, если это также был домен приложения по умолчанию. На данный момент все, что у меня есть, - это случайные догадки.
Вы также можете ввести текст своего скриншота, чтобы получить немного любви от Google ....
Я обнаружил эту проблему и должен сделать все, что могу, например очистить временный файл, перезапустить сервер, удаляю и добавляю ссылку, а также перестраиваю решение. Однако я не могу решить эту проблему. Наконец, я перемещаю свой класс сущности (почти из них необходимо сериализовать) в новую папку, которую я добавил в проект, а затем эта проблема решена.
Этот метод мне подходит.
Часовой пояс сервера отличается от вашего часового пояса? У меня была эта проблема при развертывании файлов ресурсов, время компиляции было в будущем, поэтому они не загружались.
Я бы посоветовал настроить регулярное питание, вероятно, один раз в неделю в воскресенье вечером и т. Д. Для следующего,
Проблема в том, ASP.NET веб-приложения приводят к тому, что на диске остается много временных файлов из-за динамической компиляции regex, Серилиазационные сборки и т. Д., Такие временные вещи никогда не удаляются, и все больше и больше мусора начинает собираться во временных местах, ASP.NET идет все медленнее и медленнее, и наступает точка, когда дефрагментация диска, а также памяти достигает очень высокой точки, вещи начинают выходить из строя.
Никто не любит перезагружать сервер раз в неделю, но я помню, что у нас не было выбора, в ASP.NET 1.1 у нас была стабильная система после перезагрузки каждый день, в ASP.NET 2.0 и далее, мы хорошо, чтобы перезагрузка была запланирована один раз в неделю.
Мое предположение, что у вас много открытых, но не закрытых соединений. Я имею в виду, что соединения не возвращаются в пул. Это выглядит нормально, когда вы запускаете приложение, но через некоторое время в пуле остается только несколько сокетов, и оно работает медленно. Еще один момент - незакрытое соединение может держать DLL в памяти, не позволяя освободить обработчик. Попробуйте отладить уничтожение объекта.
Я пытаюсь дать вам несколько идей - что мне делать, если бы я был на вашей позиции.
Прежде всего, я внимательно посмотрю на 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 шага и дадите мне обратную связь, возможно, я смогу пойти дальше. (если вы не решите и то, что найдете)
Я знаю, что это просто, но однажды у меня была эта проблема, потому что у меня был проект веб-приложения, содержащий папку
References
, и я просто скопировал свои файлы в папка
Bin
в любом веб-приложении .net в окнах Свойства проекта доступна вкладка Путь ссылки , которая по умолчанию не должна включаться в нее. отметьте этот параметр, а также вкладку Сборка в окне свойств проекта , который Выходной путь будет таким же, как bin \