我正在玩这个Azure webangular色示例 。 它包含从RoleEntryPoint
派生的类和包含button单击处理程序的.aspx页面。
我在Azure模拟器中testing它。 我把下面的代码(取自这里 )
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
在这两个angular色OnStart()
和button点击处理程序。 当angular色OnStart()
被调用时,它恰好运行在MachineName\\MyLogin
帐户下的MachineName\\MyLogin
并且当调用button处理程序代码时,它恰好运行在MachineName\\NETWORK SERVICE
帐户下的w3wp.exe
。 这是令人惊讶的。
为什么来自同一angular色项目的这些代码在不同的进程和不同的帐户下运行? 我可以改变吗?
大卫是正确的。 除此之外,您可以关闭此行为并在宿主Web核心中运行所有内容(因为它在SDK 1.4之前运行)。 您只需在服务定义中注释掉“网站”部分,如下例所示:
<?xml version="1.0" encoding="utf-8"?> <ServiceDefinition name="aExpense.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> <WebRole name="aExpense" vmsize="Medium"> <Sites> <Site name="Web"> <Bindings> <Binding name="HttpsIn" endpointName="HttpsIn" /> </Bindings> </Site> </Sites> <ConfigurationSettings> <Setting name="DiagnosticsConnectionString" /> <Setting name="DataConnectionString" /> <Setting name="allowInsecureRemoteEndpoints" /> </ConfigurationSettings>
使用Windows Azure v1.3及更高版本,Web角色将利用完整的IIS,而不是托管Web核心。 IIS在一个单独的appdomain中运行。
看到从Windows Azure团队的这篇博客文章的血淋淋的细节。