ASP.NET MVC - Действие с параметром - это перенаправление на страницу входа, которая не должна - PullRequest
1 голос
/ 20 июня 2011

У меня есть простое действие, которое принимает один параметр в виде строки, возвращает страницу профиля пользователя, которая работает нормально.

Однако сегодня пользователь сказал мне, что никто не может видеть его профиль, если он не вошел в систему, он просто перенаправляет на страницу входа.

Я проверил файл журнала IIS7 и вижу, что он возвращает состояние 302, а затем загружает страницу входа.

Вот страница, которая не работает:

http://www.house -mixes.com / профиль / mixchemist /

Вот пример, который отлично работает:

http://www.house -mixes.com / профиль / housemixes /

Нет атрибутов авторизации на действии / контроллере, у меня установлена ​​Helicon Ape, управляющая некоторыми пользовательскими перенаправлениями для меня, но я отключил это и все еще получаю тот же результат.

Я довольно озадачен тем, что может вызвать это только для определенного профиля, есть идеи?

EDIT:

Определенно нет атрибутов Авторизации на любом уровне, по умолчанию или на заказ. Мой web.config довольно стандартный, и я использую MVC2:

<authentication mode="Forms">
      <forms cookieless="UseCookies" enableCrossAppRedirects="true" loginUrl="~/Login" name=".ASPXAUTH" slidingExpiration="true" timeout="100000" requireSSL="false" />
    </authentication> 

Вот мое действие контроллеров (единственный атрибут на уровне контроллера [HandleError]):

[Transaction]
[PassParametersDuringRedirect]
[ModelStateToTempData]
[HttpGet]
public ActionResult Index(string artist)
{
    Account account = accountTasks.GetProfileByUsername(artist);

    if (account == null)
        return RedirectToAction<HomeController>(x => x.Index(), null);

    var viewModel = Mapper.Map<Account, ProfilePageViewModel>(account);

    return View(viewModel);
}

Пол

Ответы [ 3 ]

3 голосов
/ 20 июня 2011

Это определенно похоже на действие, требующее аутентификации. Не знаю, откуда возникла проблема, поскольку вы не показали ни кода, ни объяснили, как работает и организован ваш сайт, но вы можете начать искать атрибуты [Authorize] (пользовательские или стандартные, а также фильтры глобальных действий, если это ASP.NET MVC 3), а также <authorization> разделов в вашем web.configs.

Это абсолютно связано с некоторым пользовательским кодом, который выполняется и просто требует аутентификации для доступа к этому ресурсу.

1 голос
/ 21 июня 2011

Обнаружив проблему, вы были правы, сказав, что в действии внутри контроллера был указан атрибут Authorize, контроллер вызывался из-за Html.RenderAction () внутри представления.

Причина, по которой это не работает для определенного пользователя, состоит в том, что я позволяю пользователям добавлять различные виджеты в свой профиль, чтобы упорядочить их выбор, это был определенный виджет с атрибутом Authorize.

Думал, что я отправлю ответ в случае, если в будущем он кого-нибудь отбросит.

1 голос
/ 20 июня 2011

PM> Glimpse пакета установки

Используйте инструменты, предоставляемые Glimpse Web Debugger, чтобы получить очень четкое представление о том, что видит MVC.

...