2012-07-01 6 views
0

Я создал webservice, который работает под IIS, и является x64 бит. Я развернул его с помощью пользовательского сценария установки на машине Azure (ws2008 r2). Я создал настраиваемый пул приложений (64 бит, режим управляемого конвейера: Classic, .net v2, с учетной записью NetworkService как пользователь службы). Кажется, что все правильно настроено, но когда я пытаюсь запустить свое приложение, я получаю следующую ошибку:Инициализация RoleEnvironment в Azure на бите IIS x64 вызывает ошибку

System.TypeInitializationException: Инициализатор типа для Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment сделал исключение. ---> System.TypeInitializationException: Инициализатор типа для '' выбрал исключение. ---> .ModuleLoadException: модуль C++ не загружался при попытке инициализировать приложение appdomain по умолчанию.

Я могу запустить автономное приложение формы выигрыша, и этот метод работает правильно. Более того, когда я переключаю пул приложений на 32 бита, и я запускаю свое приложение, тогда он терпит неудачу (потому что он имеет компоненты x64 бит), однако позже, когда вы вернетесь к x64, он работает правильно, RoleEnvironment возвращает правильные данные.

Есть ли у вас идеи, что я могу сделать неправильно, когда речь заходит о конфигурации, поэтому этот модуль нельзя загружать в x64-разрядную версию?

ответ

0

Это может помочь. Вы можете добавить начальную задачу в файл .csdef проекта Windows Azure, чтобы настроить IIS, чтобы разрешить 32-битные модули в 64-разрядных приложениях.

В вашем проекте Windows Azure .csdef файл:

<?xml version="1.0" encoding="utf-8"?> 
<ServiceDefinition> 
    <WebRole ...> 
... 
    <Startup> 
     <Task commandLine="ConfigureIIS.cmd" executionContext="elevated" taskType="simple" /> 
    </Startup> 
    </WebRole> 
</ServiceDefinition> 

ConfigureIIS.cmd (все одна линия):

% WINDIR% \ system32 \ Inetsrv \ APPCMD набор конфигурации -сече-: applicationPools -applicationPoolDefaults .enable32BitAppOnWin64: true

+0

Это не помогает – Darqer

0

Я считаю, что вам нужно будет установить среду выполнения VC++ x64 в вашей Azure VM с помощью задачи запуска, так как некоторые из используемых вами ссылок требуют времени выполнения VC++.

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