我在Cloud Service
和MVC Application
中创建了一个包含Web Role
的{{1}}项目。在MVC项目中,我正在使用Worker Role
...并且某些字段是根据被授权的用户管理的(没有大问题)。
当我将“设置为启动项目”发送到MVC项目时,我的Windows Authentication
看起来很好......所有内容都显示在&按预期工作(这很好)。
然后,是时候开始工作了。调试Windows Identity Principal
。为此,我必须通过选择“设置为启动项目”来运行Worker Role
到Windows Azure Emulator
项目本身(然后按F5)。这样做可以激活Cloud Service
中的所有Cloud Service
个角色。
但是,当我这样做时,Windows Azure Emulator
属性为false ...并且我的所有HTML元素都会消失。
问题(S):
- 为什么运行IsAuthenticated
本地阻止Windows Azure Emulator
?
- 如果我需要“设置”模拟器......怎么样?
严格的部分代码:
这里没什么特别的......
Windows Authentication
网页配置的部分:
这里没什么特别的......
var identity = filterContext.HttpContext.Request.LogonUserIdentity;
if (!identity.IsAuthenticated)
RedirectToAccessDeniedPage(filterContext);
答案 0 :(得分:1)
当您将MVC项目设置为启动项目时,您实际上是通过IIS在您的计算机上本地运行项目。 IIS将自动使用您当前的NT凭据作为当前登录的用户,这是有道理的。
正如Parv Sharma在评论中所暗示的,当您将云服务设置为启动项目时,会启动一个单独的VM emualtor,模拟云中会发生的情况。虽然VM也在IIS中运行您的应用程序,但由于您尚未登录,因此不知道您是谁。并且因为您的本地NT凭据未存储在该VM中(无论如何将用户凭据存储在VM中都没有意义),IIS无法识别您是否已登录。
因此,您需要实现一种身份验证表单,允许用户针对目录存储进行身份验证,这就是Azure目录服务的全部内容。以下是Azure Directory Services场景的MSDN文档,其中包含示例实现的链接。