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"/>

+0

是您的开发机器也是在Linux中使用Apache和Mono运行? –

+0

我认为这与使用的认证类型有关。你使用表单身份验证吗? – Icarus

+0

那么,我不知道我正在使用哪种类型的身份验证。 – stighy

单声道仅支持“无”和“表单”身份验证模式。 “Forms”是ASP.NET窗体使用的身份验证。 “无”表示 不需要认证。不支持的选项是“Windows” 和“护照”。

Mono: Config system.web authentication

您正在匿名连接到您的应用程序。

假设你正在使用窗体身份验证:
如果在您的配置文件的system.web节看,应该有像这样的一段:

<system.web> 
    <authorization> 
    <deny users="?"/> 
    <!-- deny anonymous --> 
    <allow users="*"/> 
    <!-- allow all authenticated --> 
    </authorization> 
</system.web> 

如果您确保deny users="?"设置Asp.Net将强制用户在允许访问页面之前进行身份验证。这将确保设置User.Identity.Name属性。