2012-07-01 41 views
0

我創建了在IIS下運行的webservice,它是x64位。我在Azure機器上使用自定義安裝腳本部署它(ws2008 r2)。我創建了自定義應用程序池(64位,託管流水線模式:Classic,.net v2,NetworkService帳戶作爲服務用戶)。一切似乎都配置正確,但是當我嘗試運行我的應用程序時,出現以下錯誤:Azure在IIS x64位上的RoleEnvironment初始化引發錯誤

System.TypeInitializationException:'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment'的類型初始值設定項引發異常。 ---> System.TypeInitializationException:「'的類型初始值設定項引發異常。 ---> .ModuleLoadException:嘗試初始化默認appdomain時,C++模塊加載失敗。

我可以運行獨立的勝利表單應用程序,並且此方法正常工作。當我將應用程序池切換到32位並且運行我的應用程序時,它會失敗(因爲它具有x64位組件),但是稍後在切換回到x64時它會正常工作,RoleEnvironment會返回正確的數據。

你有什麼想法什麼我可以做錯錯配置,所以這個模塊不能在x64位版本加載?

回答

0

這可能有所幫助。您可以將啓動任務添加到Windows Azure項目的.csdef文件,以將IIS配置爲允許64位應用程序中的32位模塊。

在您的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設置配置-section:applicationPools -applicationPoolDefaults .enable32BitAppOnWin64:true

+0

它沒有幫助 – Darqer

0

我相信您需要通過啓動任務在您的Azure虛擬機中安裝VC++ x64運行時,因爲您正在使用的一些引用需要VC++運行時。