2010-11-18 4 views
0

Моя текущая проблема заключается в том, что сборка, которую я изменила, работает на моем локальном хосте во время отладки, но я не могу заставить новый код распознаваться на сценическом сервере, чтобы скопировать код на ,Asp.Net Assembly не запущен

Ненавижу говорить об этом, но прямо сейчас я могу честно сказать, что «он работает на моей машине». Хорошая новость - это тот же код, который работает так же, как и на другой машине.

Я открыл WebSite.dll с рефлектором и проверил разборку на исходный код, и у меня появился новый материал.

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

Есть ли какой-то кеш, который мне нужно сделать недействительным?

VS2010, C# 4.0, IIS7, Windows Server 2008.

Спасибо, Джош

+1

Как именно вы знаете, что ваш код не работает? Как это проявляется? – Oded

+0

Настроен ли веб-сайт для 4.0? –

+0

код не работает, так как я могу проверить, что он работает на двух машинах разработки, и я вижу эту инструкцию в сборке на сценическом сервере. Между двумя сборками нет разницы в размерах. Это не идеально, но это будет делать на пути к проверке –

ответ

1

Есть три approches вы можете использовать depneding на какой уровень доступа доступен для вас. Использование SysInternals Process Explorer.

Когда вы нажимаете на процесс, библиотеки DLL отображаются в нижней панели. Он будет включать в себя, где он загружен как всплывающая подсказка, и вы можете выбрать его в качестве столбца для отображения.

Получение Dll из памяти

Сначала получите дамп памяти процесса ASPNET работника. See this question сверху как.
Принятый ответ Мэтт Эверсона является использование SysInternals VMMap который ...

имеет опции командной строки для сценариев, и может дать вам необходимую вам информацию.

vmmap.exe -p w3wp.exe C: \ memory.txt

После того, как вы сделали, что вы можете использовать WinDbg для проверки модулей (DLL) в памяти. This article от Roberto Farah показывает вам, как это сделать, а затем извлекать из памяти на диск, а затем использовать отражатель, как вы это делали раньше.

Ассамблеи Binding Log Viewer

Вы можете использовать использовать Assembly Binding Log Viewer, который расскажет вам точно, что загружается и откуда она взялась. Это гораздо лучший подход, но требует, чтобы вы вносили изменения в реестр, чтобы включить регистрацию, которую некоторые люди уклоняются от ящиков с не-Dev.

+0

теперь, когда вы упоминаете sysinternals, мне интересно, если бы исследователь процесса сделал бы трюк ?? Просто идея, если я расскажу об этом позже. Это работало, чтобы узнать оскорбительную сборку. Благодаря! –

+0

@Josh. Ты совершенно прав. Я всегда забываю об этом. Я добавлю это к ответу –

1

Я видел подобные проблемы раньше, и это была проблема с разрешениями, запущенными в вашей промежуточной среде, если вы используете отражение, которое может потребоваться для доступа к некоторой DLL в GAC, что может вызвать проблему, убедитесь, что ваш пул приложений доступ к внешним библиотекам также ...

Смежные вопросы