Request.Form与会话MVC C#

时间:2018-06-22 06:55:44

标签: c# asp.net-mvc forms session-variables

我正在使用 Session 变量来存储信息。在从外部更改某些文件(如web.config或IIS本身)之前,它可以正常工作。就我而言,这通常发生在詹金斯身上。 发生这种情况时,会话中存储的所有信息都会丢失,结果我被强制注销。

为了解决这个问题,我现在打算使用 Request.Form 来保存所有必需的信息。因此,我想问论坛,Request.Form是否安全,以便像会话变量一样使用它。

1 个答案:

答案 0 :(得分:0)

MVC是Model View Controller吗?不使用会话不是一个好主意,也不是request.form。编写MVC应用程序的最佳方法是根据您的需求创建模型,并从控制器中“发布”或“获取”。与会话和request.from相比,它甚至更具可测试性,可维护性和可扩展性。

仅举一个例子;

    public class YourController : Controller
{
    private readonly IEmailMessengerService _emailMessageService;
    private readonly IUnitOfWorkFactory _unitOfWorkFactory;

    // dependency injection 
    public YourController
        (IUnitOfWorkFactory unitOfWorkFactory,
            IEmailMessengerService emailMessageService)
    {
        _unitOfWorkFactory = unitOfWorkFactory;
        _emailMessageService = emailMessageService;
    }


    // GET: YourController
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(YourViewModel model)
    {
        #region backend validation
        if (
            !GoogleReCAPTCHAHelper.Check(Request["g-recaptcha-response"],
                ConfigurationManager.AppSettings["GoogleReCAPTCHASecret"]))
        {
            ModelState.AddModelError(string.Empty, "You have to confirm that you are not robot!");
            return View(model);
        }

        // do your validation
        #endregion

        // do your needs here. 
    }
}

问题是,您真的需要使用Session吗?如果您确实要存储全局数据,则可以考虑将cookieslocalStoragesessionStroge存储在客户端。