ASP.NET MVC - пост работает на компьютере разработчика, но не на живом - PullRequest
0 голосов
/ 01 февраля 2010

У меня есть страница редактирования, которую я хочу использовать, чтобы разрешить редактирование пользовательских данных. Когда я обновляю некоторые пользовательские данные и публикую их на своем компьютере разработчика, они работают должным образом, подробности сохраняются в БД, и я перенаправляюсь на страницу сведений, где отображается обновленная информация.

Когда я публикую сайт на работающем сервере и выполняю те же действия, он практически не выходит за пределы страницы редактирования. Единственный раз, когда страница будет успешно опубликована и перенаправлена, это если ни одна из деталей не будет изменена с исходных значений.

Вот код для публикации:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection formValues)
{
    var repo = new UserRepository();
    var user = repo.GetById(id);
    try
    {
        double value;
        foreach(var stat in user.Stats)
        {
            var rawValue = formValues[stat.Name];
            if (Double.TryParse(rawValue, out value))
            {
                stat.Value = value;
            }
            else
            {
                ModelState.AddModelError(stat.Name+"Err", "Value must be numerical.");
            }
        }
        UpdateModel(user);

        if (ModelState.IsValid)
        {
            repo.Save();
            return RedirectToAction("details", new { id = user.ID });
        }
        else
            throw new InvalidOperationException();
    }
    catch
    {
        foreach (var issue in user.GetRuleViolations())
        {
            ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
        }
        return View(user);
    } 
}

Я на Windows Server 2003 + IIS 6.0

Ответы [ 3 ]

3 голосов
/ 01 февраля 2010

Вы уверены, что не видите правильное поведение? Вы используете общий подход try-catch, который просто возвращает представление, если есть проблема. Предположим, что ваш метод repo.Save () завершился неудачно, без «нарушения правил» - тогда вы просто снова увидите свое представление, так как не существует какого-либо конкретного кода для решения чего-либо еще.

0 голосов
/ 01 февраля 2010

Мне кажется, что при обновлении данных произошла ошибка ... Может быть, какая-то проблема с подключением к данным или ошибка типа данных? Вы не упомянули, действительно ли данные сохранены и единственная проблема - это перенаправление ... что это?

Я почти уверен, что данные не сохраняются в БД, и поэтому я предлагаю вам поближе взглянуть на ваши соединения БД, чтобы убедиться, что соединения БД действительны для опубликованного сайта. Если соединение с БД кажется правильным, убедитесь, что вводимые вами данные действительны в базе данных.

Вы также можете немного изменить код, чтобы выяснить, связана ли проблема с базой данных, перенаправив пользователя в случае, если ModelState.IsValid возвращает false:

return RedirectToAction("errorpage");
0 голосов
/ 01 февраля 2010

Что вы запускаете на машине разработчика и что вы работаете на живой машине?

Это может быть связано со способностью IIS 6 обрабатывать маршрутизацию.

EDIT

Windows 7 работает с IIS 7 Windows 2003 работает под управлением IIS 6

вот где я думаю, что вы лжете.

Следующая ссылка может помочь:

http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

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