User.Identity.Name在生产环境中为空
问题描述:
我有一个ASP.NET 2.0 Web应用程序。 如果我在我的开发机器上以调试模式运行,则使用专有名称User.Identity.Name不是空白,它会返回我的名称“MyDomain \ myname”。 如果我使用apache和Mono运行时将这个相同的应用程序部署到Linux服务器中,则User.Identity.Name为空。User.Identity.Name在生产环境中为空
我在哪里错了?
编辑:我不知道认证的类型。我使用web.config'原样'没有任何修改,我也尝试过:<authentication mode="Windows"/>
答
单声道仅支持“无”和“表单”身份验证模式。 “Forms”是ASP.NET窗体使用的身份验证。 “无”表示 不需要认证。不支持的选项是“Windows” 和“护照”。
答
您正在匿名连接到您的应用程序。
假设你正在使用窗体身份验证:
如果在您的配置文件的system.web节看,应该有像这样的一段:
<system.web>
<authorization>
<deny users="?"/>
<!-- deny anonymous -->
<allow users="*"/>
<!-- allow all authenticated -->
</authorization>
</system.web>
如果您确保deny users="?"
设置Asp.Net将强制用户在允许访问页面之前进行身份验证。这将确保设置User.Identity.Name
属性。
是您的开发机器也是在Linux中使用Apache和Mono运行? –
我认为这与使用的认证类型有关。你使用表单身份验证吗? – Icarus
那么,我不知道我正在使用哪种类型的身份验证。 – stighy