2015-05-05 2 views
2

У меня есть служба ASP.NET REST API, и она работает довольно быстро и точно, за исключением авторизации, я использую стандартный токен auth на основе Owin.Security, вот что это выглядит следующим образом:ASP.NET авторизация на основе токенов слишком длинна

public void ConfigureAuth(IAppBuilder app) 
    { 
     // Configure the db context and user manager to use a single instance per request 
     app.CreatePerOwinContext(ApplicationDbContext.Create); 
     app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); 

     // Enable the application to use a cookie to store information for the signed in user 
     // and to use a cookie to temporarily store information about a user logging in with a third party login provider 
     app.UseCookieAuthentication(new CookieAuthenticationOptions()); 
     app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 

     // Configure the application for OAuth based flow 
     PublicClientId = "self"; 
     OAuthOptions = new OAuthAuthorizationServerOptions 
     { 
      TokenEndpointPath = new PathString("/Token"), 
      Provider = new ApplicationOAuthProvider(PublicClientId), 
      AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"), 
      AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(10), 
      AllowInsecureHttp = true, 

     }; 

     // Enable the application to use bearer tokens to authenticate users 
     app.UseOAuthBearerTokens(OAuthOptions); 

}

Я ничего не изменится, то из шаблона проекта, и он работает отлично, за исключением времени. Потребовалось около 30 секунд, чтобы вернуть токен-носитель с сервера. Я довольно новичок в разработке ASP.NET, и я понятия не имею, почему так долго, у меня 10 пользователей и 3 роли в моей базе данных, и я уверен, что он может работать быстрее, но не знаю, как

другой запрос остальное (POST, GET) работает быстро и хорошо, это занимает 30 секунд только для/запроса токена

хорошо, я переиздал свое серверное решение, и теперь он принимает случайным образом от 3 до 30 секунд получить токен аутентификации, это довольно странное поведение, не так ли?

+0

Можете ли вы посмотреть трассировку скрипача, чтобы увидеть запрос, для которого Url (s) занимает 30 секунд или если это распределено между различными запросами? – ezile

+0

@ezile nono, это просто для запроса токена myazuresite.com/Token Другие работы быстро и качественно –

+1

@ Greag.Deay Одиночная проблема, аутентификация заняла более 5 секунд для входа. Вы нашли какой-либо способ решить эту проблему ? –

ответ

0

1) Если вы запрашиваете токен сразу после запуска приложения, то перед первым исполнением любого метода контроллера происходит логика инициализации приложения.
2) Если вы используете экземпляр удаленного SQL-сервера, это может привести к длительной обработке запросов. Попробуйте локальное профилирование с использованием локального SQL-сервера.

Смежные вопросы