这是怎么发生的Azure webangular色入口点和.aspx页面处理程序在不同的进程中运行?

我正在玩这个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团队的这篇博客文章的血淋淋的细节。