我迁移n层Silverlight应用程序到Windows Azure和我撞南墙。 当我登录,网络服务无法知道是谁认证。 我的云项目有两个作用:
- 网络用户界面:在Azure上,它的IP是111.222.33.44:80
- Web服务:在Azure上,它的IP是111.222.33.44:8080
对Web UI配置:
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms name="COOKIENAME" loginUrl="~/Login/login.aspx" timeout="2880" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<machineKey validation="SHA1" decryption="AES" validationKey="VKEY" decryptionKey="DKEY"></machineKey>
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
</system.web>
配置Web服务
<system.web>
<authentication mode="Forms">
<forms name="COOKIENAME" loginUrl="~/Login/login.aspx" timeout="2880" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<machineKey validation="SHA1" decryption="AES" validationKey="VKEY" decryptionKey="DKEY"></machineKey>
</system.web>
在Web UI角色,登录/ login.aspx的提交的用户名和密码。 一个cookie与方法创建FormsAuthentication.SetAuthCookie(username, myVar);
。 然后,用户被重定向到Default.aspx
包含Silverlight应用程序。
当它启动时,Silverlight应用程序通过返回获取从Web服务角色的用户名HttpContext.Current.User.Identity.Name
。
所有在本地云模拟器很好,但是当我在Windows Azure中(分期)部署我的项目中,Web服务并不知道我已连接。 我用小提琴手,我看到111.222.33.44:8080/Login/login.aspx被查询的页面(页面不Web服务中的角色存在,它是要知道,如果一个用户进行身份验证的方式)。
我怀疑Web服务不能获得用户名,因为它不能获取由Web UI角色创建的cookie。 它实际上是有可能使它工作或做我必须合并使用Web UI角色Web服务的角色?
在这两种角色的计算机密钥是相同的。