2015-06-27 1 views
2

У меня проблема с моим веб-приложением. Я разрабатываю с использованием VS 2013 (запускается как Administrator) и Windows 8.WebApplication отлично работает на IIS Express, но не на локальном IIS

Когда я отлаживаю использование IIS Express - все работает нормально, без ошибок (я запускаю VS как администратор). Когда я меняю свойства проекта на использование локального IIS (он установлен) - я не могу использовать внешнюю библиотеку, которая помещается в GAC (Microsoft.FlightSimulator.SimConnect). Также я запускаю VS в качестве администратора. Ошибка сброса: «HRESULT E_FAIL был возвращен из вызова COM-компонента» - это ничего не говорит мне. Это бросается во время создания нового объекта SimConnect:
var simconnect = new SimConnect(...)
OFC, чтобы использовать SimConnect, во-первых, Microsoft Flight Simulator должен быть запущен (и он запущен). Это было вызвано причиной проблемы, которую я нашел в Интернете, вторая - предоставление разрешений (описано ниже).

Детали: У меня есть два проекта в решении: проект библиотеки (который используется для подключения к FSX) и веб-проект (MVC - для представления результатов).
1) Я попытался переместить весь проект проекта библиотеки в проект MVC - ничего.
2) Я использовал диспетчер IIS для публикации своего сайта (с отдельным AppPool) - результат такой же, как для локального IIS.
3) Я предоставил разрешения для папки (где размещены проекты) для моего собственного AppPool, а также для IUSR, IIS_IUSR и DefaultAppPool - полный доступ. И ничего.
4) Я побежал FSX в качестве администратора - тоже ничего:/

Я нашел обходной путь: Я переехал проект библиотеки к другому проекту - консольное приложение, где я HttpSelfHostConfiguration принять это. И позже я называю это api из основного проекта (MVC). Для этого решения все работает нормально (я тестировал локальную IIS [отладку], а также для диспетчера IIS). Мне нужно только запустить проект Host Api в качестве администратора.

Мне очень любопытно, в чем причина исключения. И дополнительно: как это решить :)

Похоже, проблема с разрешениями - но я предоставил каждому используемому AppPool.
Может быть причиной отсутствия разрешений для dll в GAC? Я так не думаю, но я понятия не имею, что делать. Если да, то как предоставить разрешения для dll в GAC (или как их скопировать)?

+0

является веб-приложение работает под полным доверием? – Proxytype

+0

Итак, для приложения требуется Flight Simulator для запуска? Это может работать при использовании процесса пользовательского режима, такого как IIS Express, но кто вы убедитесь, что он работает, когда никто не вошел в систему. Зависимость от процессов графического интерфейса от ваших приложений на базе IIS не является хорошей идеей и может не работать. –

+0

@Proxytype Я добавил: ' ' в соответствии с этим (вы имели в виду, что?): Https: // msdn.microsoft.com/en-us/library/wyts434y(v=vs.140).aspx И все еще ничего для локального IIS:/ – Krzyrok

ответ

5

@Krzyrok, Недавно была такая же проблема в моем одном из моих проектов, где я использовал внешние библиотеки. После следующих бесконечных крошек я решил его решить. Измените идентификатор пула приложений с «ApplicationPoolIdentity» на «LocalSystem». Я также изменил анонимную аутентификацию сайтов на «Идентификатор пула приложений» из указанного IUSR, но протестировал его, и его можно оставить в IUSR. Я также предоставил разрешения для папки для IUSR и IIS_IUSR.

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

  • Нет связанных вопросов^_^