История вопроса / проблема : я запускаю приложение Angular (с C # /. NET WebApi / DataAccess) и получаю следующие ошибки при попытке входа в систему (происходит в среде DEV, а не в REL):
Ошибки консоли Chrome Dev Tools:
Ошибка происходит только в DEV.Не бывает в REL или PROD.Это работало в DEV ранее.
То, что я до сих пор пробовал :
Я могу делать вызовы других классов и методов в WebApi, но не уверенОткуда появилась эта ошибка.
Я не вижу никакой дополнительной информации на вкладке "Сеть" в Chrome Dev Tools (просто снова упоминается код состояния)
Я использовал отладчик на вкладке «Источники» инструментов разработчика Chrome, а также не увидел никакой дополнительной информации
В коде C # не было никаких измененийчто я могу видеть из системы контроля версий.Угловой компонент и сервис одинаковы.
Я протестировал другие части API, как указано выше
Я проверил мойКонфигурационные файлы несколько раз, и они, кажется, имеют соответствующие значения, которые у них были
Я просмотрел информацию об авторизации токена, такую как: https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server Spotify APIневерный запрос на авторизацию api / token Ошибка: 400 (а также все другие статьи SO, посвященные 400 ошибкам для api token, которые я смог найти)
Отладка в Visual Studio: дляOAuthAuthorizationServerOptions: AccessTokenFormat равно нулю. AuthorizeEndpointPath равно {}.Но TokenEndpointPath равен {/ api / token}
Код :
login.component.ts :
cmdLogin_click()
{
if (this._authForm.value.username != null && this._authForm.value.password != "")
{
if (this._authForm.valid)
{
this.securityService.loginEndpoint(this._authForm.value.username,this._authForm.value.password)
.subscribe(response => {
this.setUser(response);
this.routerService.navigate(['/home']);
},
}
}
}
security.service.ts :
public loginEndpoint(email: string, password: string): Observable<any> {
let url = API_URL + '/api/token';
let ip = "";
const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');
let content: string = "grant_type=password&username=" + email + "&password=" + password + "&ip=" + ip
return this.http.post(url, content, { headers: headers }).pipe(
catchError(this.handleError)
)
}
private handleError(error: HttpErrorResponse) {
if (error.error instanceof ErrorEvent) {
// A client-side or network error occurred. Handle it accordingly.
console.error('An error occurred:', error.error.message);
} else {
// The backend returned an unsuccessful response code. // The response body may contain clues as to what went wrong,
console.error(
`Backend returned code ${error.status}, ` +
`body was: ${error.error}`);
}
// return an observable with a user-facing error message
return throwError(
'Something bad happened; please try again later.');
};
Startup.cs :
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
Startup.Auth.cs :
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);
// Configure the application for OAuth based flow
PublicClientId = "self";
OAuthOptions = new OAuthAuthorizationServerOptions
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/api/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromHours(25),
Provider = new EmdOAuthProvider(),
RefreshTokenProvider = new SimpleRefreshTokenProvider()
};
// Enable the application to use bearer tokens to authenticate users
app.UseOAuthBearerTokens(OAuthOptions);
}
Мой ожидаемый результат - возможность входа в систему без ошибки.Мой фактический результат - ошибки, перечисленные выше.
Застрял в этом в течение нескольких часов.Где я должен сосредоточиться в этой точке?