2011-11-30 166 views
1

我有一個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

回答

1

單聲道僅支持「無」和「表單」身份驗證模式。 「Forms」是ASP.NET窗體使用的身份驗證。 「無」表示 不需要認證。不支持的選項是「Windows」 和「護照」。

Mono: Config system.web authentication

1

您正在匿名連接到您的應用程序。

假設你正在使用窗體身份驗證:
如果在您的配置文件的system.web節看,應該有像這樣的一段:

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

如果您確保deny users="?"設置Asp.Net將強制用戶在允許訪問頁面之前進行身份驗證。這將確保設置User.Identity.Name屬性。