запросы перенаправляются на login.aspx?ReturnUrl=

Я реализовал веб-сервис, используя сервисный стек, используя Visual Studio. Запуск службы из отладчика vs работает нормально. Я только что попытался развернуть его на машине Debian с помощью XSP4. Служба использует ведение журнала, насколько я могу судить, служба запущена и работает. Файл журнала создается, когда я запускаю службу, но любой запрос, который я делаю, не работает. Например, я делаю следующий запрос с помощью браузера:

http://127.0.0.1/Activity/5b1e5316-8ea5-4ba5-aaee-7f40151b80d3/Unit

Но браузер перенаправляется на:

http://127.0.0.1/login.aspx?ReturnUrl=%2fActivity%2f5b1e5316-8ea5-4ba5-aaee-7f40151b80d3%2fUnit

Я реализовал собственную аутентификацию, используя глобальный фильтр запросов, который я добавляю в методе Configure. Я очень смущен, почему запрос перенаправляется на login.aspx. Также в лог-файле видно следующее:

Ошибка 2013-01-10 00:07:53.2631 NotFoundHttpHandler 192.168.23.2 Запрос не найден: /login.aspx?ReturnUrl=%2fActivity%2f5b1e5316-8ea5-4ba5-aaee-7f40151b80d3%2fUnit

Кто-нибудь знает, что может вызвать такое поведение? Вот код, который добавляет глобальный фильтр:

this.RequestFilters.Add((httpReq, httpResp, requestDto) =>
        {
            try
            {
                var userCreds = httpReq.GetBasicAuthUserAndPassword();

                if (userCreds == null)
                {
                    httpResp.ReturnAuthRequired();
                    return;
                }

                var userName = userCreds.Value.Key;
                var userPass = userCreds.Value.Value;

                if (!TryResolve<IAuthenticationProvider>().AuthenticateUser(userName, userPass))
                {
                    httpResp.ReturnAuthRequired();
                }

                return;
            }
            catch (Exception ex)
            {   
                log.Error(ex);
                throw new ApplicationException(ex.Message, ex);
            }
        });

xsp
person sam    schedule 09.01.2013    source источник
comment
Это похоже на проблему перенаправления ASP.NET в вашем Web.Config. ServiceStack не перенаправляет на какую-либо login.aspx страницу.   -  person mythz    schedule 10.01.2013
comment
У меня такая же проблема, но с MVC. для аутентификации также установлено значение None в web.config.   -  person Amr Ellafy    schedule 18.02.2013
comment
У меня была такая же проблема с MVC после добавления режима аутентификации = None / ›. Я добавил в web.config (system.webServer/modules) следующее: ‹add name=FormsAuthenticationDisposition type=ServiceStack.ServiceInterface.SuppressFormsAuthenticationRedirectModule, ServiceStack.ServiceInterface /›   -  person Adam    schedule 19.06.2013
comment
@sam, если бы вы разместили свой комментарий в качестве ответа, я бы проголосовал за него;)   -  person Chase Florell    schedule 11.10.2013


Ответы (2)


Я только что понял это. я добавил

<authentication mode="None" />

в Web.config следующим образом:

<system.web>
    <!-- mode=[Windows|Forms|Passport|None] -->
    <authentication mode="Windows" />
</system.web>

Документацию можно найти здесь: msdn.microsoft.com/en-us/library/aa291347(v=vs.71).aspx

person sam    schedule 13.10.2013

Я использовал фрагмент ниже, чтобы решить свои проблемы с аутентификацией .NET Forms, переопределяющей 401, которую я пытаюсь вернуть через ServiceStack.NET. При каждом запросе в начале, если это AJAX, немедленно подавляйте поведение. Этот флаг был создан MS именно для этой цели. http://msdn.microsoft.com/en-us/library/system.web.httpresponse.suppressformsauthenticationredirect.aspx

Обратите внимание, что многие другие решения, которые появляются при поиске, сообщают вам об отключении аутентификации .NET, что в большинстве случаев просто невозможно. Этот код работает без каких-либо других модификаций.

protected void Application_BeginRequest()
{
    HttpRequestBase request = new HttpRequestWrapper(Context.Request);
    if (request.IsAjaxRequest())
    {
        Context.Response.SuppressFormsAuthenticationRedirect = true;
    }
}
person Tyler Forsythe    schedule 03.01.2014