2010-12-15 3 views
0

Я искал проблему в течение недели прямо и не смог ее выяснить, и я отчаянно для исправления.Исполняемый файл IIS не выполняется

На клиентском сайте у нас есть две среды: UAT и PROD. UAT работает отлично (помните об этом). Теперь мы пытаемся развернуть решение для PROD, но некоторые части решения не работают.

Мы разработали приложение asp.net, которое мы предоставляем клиентам, чтобы позволить им вызывать пакеты SSIS (есть несколько выпадающих списков, которые они сначала выбирают, затем нажмите кнопку с именем «invoke»). Когда пользователь нажимает кнопку «Вызов», вызывается командный файл с именем InvokeSSIS.bat, который собирает вызов командной строки в dtexec с соответствующими параметрами.

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

Исполняемый файл находится на отображаемом диске H: \.

Я изменил командный файл InvokeSSIS.bat, чтобы захватить команду, которую генерирует командный файл. Если я выполню эту команду из командной строки, она отлично работает. Из Webapp Invoker он выполняет пакет, но задачи, ответственные за вызов исполняемого файла, не выполняются, так как весь пакет занимает всего 1 секунду для завершения (тогда как он занимает около минуты).

Исполняемый файл имеет GUI, но это НЕ интерактивно. Это связано с тем, что когда вы вызываете GUI с определенными параметрами, он автоматически запускается в пакетном режиме и выполняет макрос, используемый для создания желаемой электронной таблицы.

Я знаю, что это нормально, потому что он работает на сервере UAT. И он работает из командной строки!

Я проверил разрешения на исполняемый файл (щелкните правой кнопкой мыши по исполняемому файлу и щелкните свойства.) Я предоставил полный контроль над исполняемым файлом тому же пользователю, который указан как вкладка идентификатора пула приложений, который я использую.

Может кто-нибудь, пожалуйста, помогите мне? Как я уже сказал, я умираю здесь!

Пожалуйста, дайте мне знать, если у вас есть идеи или какая другая информация вам нужна.

окружающей среды (как UAT и PROD) ОС: Windows Server 2003
IIS 6
asp.net 2.0
SQL Server 2008

Спасибо!

Steve

+1

Не могли бы вы изменить свое сообщение, чтобы четко изложить, что вызывает/выполняет то, что, где и когда именно? Ваш пост очень сложно понять. Кроме того, неплохо дать рабочий процесс IIS * полный * права на исполняемый файл, и это ни в коем случае не нужно. – 2010-12-15 11:27:44

+0

И ваши идентификаторы пула приложений IIS отличаются в UAT/PRD? – Sam 2010-12-15 16:56:57

ответ

1

Вы не можете использовать сетевой диск с IIS.

Вы должны использовать синтаксис \\ servername для доступа к файлам в других системах.

1

Я согласен с user544284 в том, что это по крайней мере частично проблема сопоставления. Я на минуту игнорирую полное безумие того, что веб-приложение вызывает пакетный файл, чтобы запустить исполняемый файл, который находится на удаленном сетевом диске, через сопоставление букв дисков.

Скорее всего, в окне UAT есть что-то настроенное, которое отображает букву диска, для которой отсутствует Prod.

Единственная другая возможность - нарушение безопасности. Запуск .exe с сетевого диска, как правило, нахмурился. У обеих сред есть одна и та же версия окон? Они настроены одинаково в отношении UAC? Все различия здесь важны.

Что вызывает интересную мысль. Интересно, кто-то вошел в систему на сервере UAT, используя те же учетные данные, что и пул приложений, и добавил ip-адрес машины, где exe живет в списке сайтов «Local Intranet» ... Или, если они установили SSIS на самом сервере UAT.

Просто потому, что ВЫ можете войти на сервер и запустить его в командной строке, ничего не значит. Вы должны выяснить, отображается ли буква диска для пользователя, на котором работает веб-приложение, и имеет ли этот пользователь требуемые биты безопасности и может ли его локальная ОС разрешать его независимо.

Хорошо, я не могу игнорировать это: hairbrained - самое приятное прилагательное, которое я могу придумать для этой «архитектуры». Сделайте себе одолжение и вернитесь к чертежной доске на этом. На нем написано слово «хрупкое», как вы уже нашли. Вместо того, чтобы создавать пакетный файл для вызова dtexec, просто сделайте это прямо либо с помощью чего-то вроде this или this.

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