ReactJS NET на MVC5 не может разрешить зависимость

У меня та же проблема, что и в следующем вопросе:

ReactJS.Net на MVC5 не может разрешить зависимость

Все в этом вопросе точно такое же и такое же описательное. Однако на этот вопрос необходимо ответить еще раз по следующим причинам:

У меня есть последняя dll с примененным исправлением (последние dll React.NET):

<package id="React.Core" version="1.5.5" targetFramework="net45" />
<package id="react.js" version="0.13.1" targetFramework="net45" />
<package id="React.Web" version="1.5.5" targetFramework="net45" />
<package id="React.Web.Mvc4" version="1.5.5" targetFramework="net45" />
<package id="System.Web.Optimization.React" version="1.5.5" targetFramework="net45" />

Проект работает на 3-х моих машинах (локальный, dev-сервер, QA-сервер). Но когда я попытался развернуться в рабочей среде, я застрял в следующем сообщении об ошибке:

[JsRuntimeException: объект не поддерживает это свойство или метод]
MsieJavaScriptEngine.ActiveScript.ActiveScriptJsEngineBase.InvokeScript(Action action) +161
JavaScriptEngineSwitcher.Msie.MsieJsEngine.InnerExecute(String code)

...

[TinyIoCResolutionException: невозможно разрешить тип: React.JavaScriptEngineFactory]

...

[TinyIoCResolutionException: невозможно разрешить тип: React.ReactEnvironment]

Это работает на IIS7.5, и я только что обновился до .net 4.5.

Есть ли какие-либо другие недостающие требования, на которые я должен обратить внимание?


person sksallaj    schedule 13.10.2015    source источник
comment
Хм, похоже что-то не так с MsieJavaScriptEngine. Возможно, стоит опубликовать проблему на странице Github: github.com/Taritsyn/MsieJavaScriptEngine. В качестве альтернативы вы можете принудительно использовать V8 (вызовите .SetAllowMsieEngine(false) в своем ReactConfig) и посмотрите, какие ошибки выдает ClearScript. Механизм MSIE используется только в качестве запасного варианта, если не удается инициализировать V8.   -  person Daniel Lo Nigro    schedule 13.10.2015


Ответы (2)


Я понял:

Перейдите в IIS, пул приложений и перейдите в пул, который вы используете для своего веб-сайта, затем нажмите «Настройки преимуществ»:

Убедитесь, что для параметра «Включить 32-разрядные приложения» установлено значение «ИСТИНА».

Лично я не уверен, почему это работает, но это работает. Особенно с той точки зрения, что если я удалил файлы JSX, сайт заработал. Но мне нужны были мои реагирующие компоненты :-/

В powershell 1:

& "C:\Windows\System32\inetsrv\appcmd.exe" set apppool /apppool.name:DefaultAppPool /enable32BitAppOnWin64:true

где DefaultAppPool — это имя вашего пула приложений.

person sksallaj    schedule 13.10.2015

Похоже, что на рабочем сервере установлен Internet Explorer 8 или ниже. Установите Internet Explorer 9 или выше.

person Andrey Taritsyn    schedule 23.05.2016