したがって、私はC#でMVCでアプリケーションを開発しました。すべてが完璧かつスムーズに動作します。セッションオブジェクトがAzureでnullになる
私はMicrosoft Azureにすべてを搭載することに決めました。何らかの理由でMy Sessionオブジェクトがnullになり、検証のためセッションが期限切れになります。これは無作為で、時には数秒後に、場合によっては1分後に時折行われます。私は物事をクリックしているときに起こるので、これは非アクティブの時間のためではないと確信しています。
これは私が私のオブジェクトを作成し、私のログイン方法です:
public ActionResult Login(MyWebApplication.Models.LoginRQ User)
{
if (ModelState.IsValid)
{
MyWebApplication.Models.LoginRS login = new MyWebApplication.Models.LoginRS();
try
{
MyWebApplication.LoginBusiness LoginProxy = new MyWebApplication.LoginBusiness();
login = LoginProxy.Login(User);
if (login.Logged == false)
{
ViewBag.MessageError = Wrong user";
}
Session["InfoUser"] = login;
return RedirectToAction("Index","Inicio");
}
catch (Exception ex)
{
ViewBag.MessageError = ex.Message;
}
}
return View(User);
}
これは、あらゆる方法で私の検証です:
public static bool ValidateSession(MyWebApplication.Models.LoginRS InfoUser)
{
if (InfoUser == null)
{
throw new ArgumentException("SESSION EXPIRED");
}
return true;
}
私のビジネス層からメソッドをinstanciatingとき、私はこの検証を使用します。たとえば、これは顧客CRUDのビジネスレイヤーです。
public class CustomerBusiness { internal MyWebApplication.Models.LoginRS InfoUser; 内部MyWebApplication.Models.Customer OBJRES_Residentes = new MyWebApplication.Models.Customer();
[Logger]
public CustomerBusiness(MyWebApplication.Models.LoginRS InfoUser)
{
MyWebApplication.LoginBusiness.ValidateSession(InfoUser);
this.InfoUser = InfoUser;
}
} あなたが見ることができるように、私はので、私CRUD操作上のユーザ名をログInfoUserを必要としています。
これは私のWebConfigの一部です:
<system.web>
<sessionState mode="InProc" timeout ="20" cookieless="false"></sessionState>
<customErrors mode="Off">
</customErrors>
</system.web>
ありませんが、私はAzureの上でこれをどう設定したかについて話をすることができます。 WebApplicationとSQL Azure DBを作成しました。
これは私が、私はパフォーマンスが影響を受けるだろう知っている場合でも、DBキャッシュを使用して考えていますようにイライラさせられる。これはイメージです。
アイデア?私はあなたの助けの人に本当に感謝します
この検証方法はどこで呼び出されますか? – khlr
代わりにsystem.web.httpcontext.current.sessionを使用するとどうなりますか? –
どのように展開しましたか:Webアプリケーション?どのようにセッションを管理していますか?詳細を入力して質問を編集してください。 –