странная проблема с файлами cookie MVC2 - PullRequest
1 голос
/ 19 ноября 2010

У меня проблема с cookie в приведенном ниже примере. cookie действительно создается, и когда я ставлю точку отладки после его создания, я могу проверить, что находится в cookie, с помощью часов. однако, когда я перезагружаю веб-сайт, cookie все еще там, но он стал пустым и не будет создавать модель (все пустые поля равны нулю.)

Я огляделся и обнаружил ошибки, связанные с использованием response.Cookie и не имеющие срока годности, но я изменил все вокруг, и он остался пустым. Я делаю что-то не так или это потому, что я использую localhost?

    [HttpGet]
    [Autorize]
    public ActionResult ManagePaymentRun()
    {
            ViewData["currentAction"] = "Index";
            payments.AccountNo = Request.Cookies["FSCSPayments"]["AccountNo"];
            payments.SortCode = Request.Cookies["FSCSPayments"]["SortCode"];
            payments.FirstChequeNo = "2";// Request.Cookies["FSCSPayments"]["FirstChequeNo"]; 
            payments.FileName = Request.Cookies["FSCSPayments"]["FileName"];
            payments.FRN = Request.Cookies["FSCSPayments"]["FRN"];
            payments.JobNumber = Request.Cookies["FSCSPayments"]["JobNumber"];
            payments.StartRecNo = Request.Cookies["FSCSPayments"]["StartRecNo"]; 
            return View(payments);
    }

    internal void CreateCookie()
    {

        HttpCookie cookie = new HttpCookie("FSCSPayments");
        cookie.Values.Add("AccountNo", payments.AccountNo);
        cookie.Values.Add("SortCode", payments.SortCode);
        cookie.Values.Add("FirstChequeNo", payments.FirstChequeNo);
        cookie.Values.Add("FileName", payments.FileName);
        cookie.Values.Add("FRN", payments.FRN);
        cookie.Values.Add("JobNumber", payments.JobNumber);
        cookie.Values.Add("StartRecNo", payments.StartRecNo);
        cookie.Expires = DateTime.Now.AddDays(14);
        cookie.Path = "/";
        Request.Cookies.Add(cookie);
    }

Ответы [ 3 ]

1 голос
/ 20 ноября 2010
cookie.Path = "C:\\Documents and Settings\\Andy\\Cookies";

Это не предназначено для того, чтобы делать то, что вы думаете.Вы не можете указать, где cookie будет храниться на клиентском компьютере.Это зависит от браузера, и вы не можете его контролировать.Он предназначен для ограничения доступа этого файла cookie к определенным частям вашего сайта.Поэтому, если вы не хотите ограничивать, просто установите его на cookie.Path = "/".

Также ваш метод действия ManagePaymentRun выглядит странно.Зачем проверять, прошел ли пользователь аутентификацию, когда есть атрибут [Autorize]:

[HttpGet]
[Authorize]
public ActionResult ManagePaymentRun()
{
    ViewData["currentAction"] = "Index";
    var payments = new Payments();
    payments.AccountNo = Request.Cookies["FSCSPayments"]["AccountNo"];
    payments.SortCode = Request.Cookies["FSCSPayments"]["SortCode"];
    payments.FirstChequeNo = "2";// Request.Cookies["FSCSPayments"]["FirstChequeNo"]; 
    payments.FileName = Request.Cookies["FSCSPayments"]["FileName"];
    payments.FRN = Request.Cookies["FSCSPayments"]["FRN"];
    payments.JobNumber = Request.Cookies["FSCSPayments"]["JobNumber"];
    payments.StartRecNo = Request.Cookies["FSCSPayments"]["StartRecNo"]; 
    return View(payments);
}
0 голосов
/ 03 декабря 2010

Эта проблема решена и была связана с тем, что я использовал IIS 5 и MVC.сейчас мы скопировали этот проект на компьютер IIS7, и мы получили файлы cookie.

0 голосов
/ 19 ноября 2010

Я думаю, что вы должны устранить проблему, у меня есть 3 предложения:

1) cookie.Expires = DateTime.Now.AddDays (14);

2) будьте осторожны с.Добавить (ключ, значение), значения должны быть в безопасности, не содержать некоторые символы, хотя я думаю, что возникло исключение

3) укажите cookie.path

, но моя ставка - первая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...