2

ApplicationController一部のユーザー認証を処理するための抽象コントローラー クラス ( ) を作成しましたHttpContextが、コードが呼び出されたときに初期化されません。

public abstract class ApplicationController : Controller
{
    public ApplicationController()        
    {
        string myuser = HttpContext.User.Identity.Name; // NullReferenceException
    }
}
4

2 に答える 2

3

Yassir は、抽象クラスで保護されたコンストラクターを使用することについて正しいです。しかし、それで問題が解決しないことは正しいです。HttpContext はまだ十分に入力されていないため、null 参照例外が発生します。

とにかく、解決策は簡単です。コントローラーの Initialize メソッドをオーバーライドします。

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    string myuser = this.User.Identity.Name;
    base.Initialize(requestContext);
}
于 2009-09-10T19:17:15.797 に答える
0

.ctor を保護してみてください

public abstract class ApplicationController : Controller 
{
    protected ApplicationController()
    {
        string myuser = this.User.Identity.Name;
    } 
}

また、次の using ディレクティブが不足していないことを確認してください。

using System.Web.Mvc;
于 2009-09-10T01:33:28.417 に答える