#spring #jpa #spring-data-jpa #spring-data
#весна #jpa #spring-data-jpa #весна-данные
Вопрос:
У меня есть приложение веб-службы SpringBoot 2.1.4.RELEASE RESTful., использующее инициализатор Spring, встроенный Tomcat, механизм шаблонов Thymeleaf и пакет в виде исполняемого файла JAR.
У меня есть этот класс:
@Entity
@Table(name="t_menu_alert_notification")
public class MenuAlertNotification implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public MenuAlertNotification() {
super();
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonProperty("id")
private Long id;
@JsonProperty("subject")
protected String subject;
@JsonIgnore
protected Integer trend;
@JsonIgnore
protected String message;
@JsonProperty("notified")
private Boolean notified;
@Column(name = "is_read")
protected Boolean read;
@JsonProperty("creationDate")
@Convert(converter = LocalDateTimeAttributeConverter.class)
protected LocalDateTime creationDate;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "menu_alert_id")
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="name")
@JsonIdentityReference(alwaysAsId=true)
protected MenuAlert menuAlert;
..
}
и этот метод в репозитории:
@Transactional(propagation =Propagation.REQUIRED,
isolation=Isolation.SERIALIZABLE,
readOnly=false,
transactionManager="transactionManager")
@Modifying
@Query("update MenuAlertNotification n set n.read = :status where n.id in :notificationIdList and n.menuAlert.menu.user.id = :userId")
void changemenuNotificationListReadStatus( @Param("notificationIdList") List<Long> notificationIdList,
@Param("userId") long userId,
@Param("status") boolean status);
Я создал тест Junit :
MenuAlertNotification menuAlertNotification = new MenuAlertNotification (menuAlert);
menuAlertNotificationService.save(menuAlertNotification);
assertFalse (menuAlertNotification.getRead());
Long menuAlertNotificationId = menuAlertNotification.getId();
List<Long> notificationIdList = new ArrayList <Long>();
notificationIdList.add (menuAlertNotificationId);
menuAlertNotificationService
.changeMenuNotificationReadStatus (notificationIdList, user.getId(), Boolean.TRUE);
когда я сохраняю объект, все в порядке, но когда я вызываю метод changeMenuNotificationReadStatus
, я получаю эту ошибку:
019-04-16 11:21 [main] WARN o.h.e.jdbc.spi.SqlExceptionHelper.logExceptions(137) - SQL Error: 23503, SQLState: 23503
2019-04-16 11:21 [main] ERROR o.h.e.jdbc.spi.SqlExceptionHelper.logExceptions(142) - Referential integrity constraint violation: "FK56KKTN0YV9SJJIOJJVJBPAGNW: PUBLIC.T_MENU_ALERT_NOTIFICATION FOREIGN KEY(MENU_ALERT_ID) REFERENCES PUBLIC.T_MENU_ALERT(ID) (1)"; SQL statement:
delete from t_menu_alert where id=? [23503-197]
Комментарии:
1. я думаю, проблема заключается в «n.menuAlert.menu.user.id = :Идентификатор пользователя», потому что вы являетесь собственностью access дочернего элемента. и сравнивая его с id, вот почему возникает эта проблема. Поскольку MenuAlert стремится, поэтому он извлекается, но его дочерний элемент не извлекается, как дочерний пользователь menu и menu, их тип выборки будет ленивым. Поскольку они не извлекаются во время выполнения, эта проблема может возникнуть.
2. Я предполагаю, что вы создаете новый menuAlert в своем модульном тестировании, и платформа тестирования пытается удалить его в конце вашего теста. Можете ли вы включить весь модульный тест с аннотациями к тесту.
3. Да, пожалуйста, добавьте весь тест, если наши ответы не решили проблему.
4. Пожалуйста, посмотрите на мой ответ и отметьте его соответствующим образом, если это полезно
Ответ №1:
Идентификатор не генерируется MenuAlertNotification menuAlertNotification = new MenuAlertNotification (menuAlert);
, когда вы Long menuAlertNotificationId = menuAlertNotification.getId();
это делаете, и он всегда будет возвращаться null
.
Вы должны изменить вторую строку вашего теста junit на
menuAlertNotification = menuAlertNotificationService.save(menuAlertNotification);
Я предполагаю, что ваша служба menuAlertNotificationService.save(menuAlertNotification);
возвращает что-то вроде return notificationRepo.save(entity)
.
Таким образом, у вас есть новый объект, заполненный идентификатором после вставки строки, и, следовательно, он не получит указанное исключение.
Ответ №2:
Проблема заключается в том, что вы используете базу данных в памяти, и когда метод тестирования завершен, Junit удаляет все таблицы, но не в правильном порядке.
Код уровня сервиса должен зависеть от репозитория. Однако для тестирования уровня обслуживания вам не нужно знать или заботиться о том, как реализован уровень сохраняемости.
В идеале вы должны иметь возможность писать и тестировать наш код уровня обслуживания без подключения к нашему полному уровню сохраняемости.
Для достижения этой цели вы можете использовать поддержку mocking, предоставляемую Spring Boot Test.
Ответ №3:
Ошибка вызвана тем, что база данных собирается удалить запись, на которую ссылаются другие записи с внешним ключом.(Ограничение внешнего ключа)
Я предполагаю, что в тестовом примере перед фрагментом кода, который вы проанализировали здесь, есть код операции удаления, что-то вроде
MenuAlertRepository.deleteAll()
Spring JPA не будет выполнять эту инструкцию немедленно при наличии транзакции. После этого Spring JPA выполнил запрос JPQL (changeMenuNotificationReadStatus), затем он сбросил все кэшированные операторы в БД. В это время оператор delete выполнялся точно. Затем было выброшено исключение ограничения внешнего ключа.
Ответ №4:
Как сказал Цзянь, ошибка возникает не из-за вызова changeMenuNotificationReadStatus, а, вероятно, из-за предыдущего оператора, который не был сброшен.
Что-то генерирует этот оператор удаления, который отвечает за нарушение ограничения FK:
delete from t_menu_alert where id=?
В ваших тестах вы могли бы использовать saveAndFlush
методы вместо save
, и flush
регулярно отправлять запросы на изменение SQL и видеть, в чем проблема.
Здесь JPA пытается удалить MenuAlert
перед удалением ссылки MenuAlertNotification
, поэтому ограничение FK блокируется, как вы, вероятно, знаете.
Поскольку уведомление не имеет смысла для удаленного предупреждения, вы также можете каскадировать удаление:
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
или измените ON DELETE
действие ограничения FK на уровне базы данных: КАСКАД удалит ссылки, MenuAlertNotification
а SET NULL очистит ассоциацию, установив значение null для ссылки MenuAlertNotification.menuAlert
.
Вы также можете написать Java-код для удаления MenuAlertNotification
s перед MenuAlert
, на основе условий.
Мне было бы любопытно прочитать весь ваш тестовый код.
Адиль Халил, ты прав, что если метод Spring Data JPA Repository.save используется напрямую, нам нужно получить возвращаемое значение с обновленным идентификатором. Но здесь, я думаю, он вызывает сервисный уровень, который должен возвращать обновленное значение:
@Service
public class MenuAlertNotificationService {
private MenuAlertNotificationRepository repository;
public MenuAlertNotification save(MenuAlertNotification entity) {
return repository.save(entity);
}
}
Содержание
- Handling SQLExceptions
- Overview of SQLException
- Retrieving Exceptions
- Retrieving Warnings
- Categorized SQLExceptions
- Other Subclasses of SQLException
- Sql error 0 sqlstate null
Handling SQLExceptions
This page covers the following topics:
Overview of SQLException
When JDBC encounters an error during an interaction with a data source, it throws an instance of SQLException as opposed to Exception . (A data source in this context represents the database to which a Connection object is connected.) The SQLException instance contains the following information that can help you determine the cause of the error:
A description of the error. Retrieve the String object that contains this description by calling the method SQLException.getMessage .
A SQLState code. These codes and their respective meanings have been standardized by ISO/ANSI and Open Group (X/Open), although some codes have been reserved for database vendors to define for themselves. This String object consists of five alphanumeric characters. Retrieve this code by calling the method SQLException.getSQLState .
An error code. This is an integer value identifying the error that caused the SQLException instance to be thrown. Its value and meaning are implementation-specific and might be the actual error code returned by the underlying data source. Retrieve the error by calling the method SQLException.getErrorCode .
A cause. A SQLException instance might have a causal relationship, which consists of one or more Throwable objects that caused the SQLException instance to be thrown. To navigate this chain of causes, recursively call the method SQLException.getCause until a null value is returned.
A reference to any chained exceptions. If more than one error occurs, the exceptions are referenced through this chain. Retrieve these exceptions by calling the method SQLException.getNextException on the exception that was thrown.
Retrieving Exceptions
The following method, JDBCTutorialUtilities.printSQLException , outputs the SQLState, error code, error description, and cause (if there is one) contained in the SQLException as well as any other exception chained to it:
For example, if you call the method CoffeesTable.dropTable with Java DB as your DBMS, the table COFFEES does not exist, and you remove the call to JDBCTutorialUtilities.ignoreSQLException , the output will be similar to the following:
Instead of printing SQLException information, you could instead first retrieve the SQLState then process the SQLException accordingly. For example, the method JDBCTutorialUtilities.ignoreSQLException returns true if the SQLState is equal to code 42Y55 (and you are using Java DB as your DBMS), which causes JDBCTutorialUtilities.printSQLException to ignore the SQLException :
Retrieving Warnings
SQLWarning objects are a subclass of SQLException that deal with database access warnings. Warnings do not stop the execution of an application, as exceptions do; they simply alert the user that something did not happen as planned. For example, a warning might let you know that a privilege you attempted to revoke was not revoked. Or a warning might tell you that an error occurred during a requested disconnection.
A warning can be reported on a Connection object, a Statement object (including PreparedStatement and CallableStatement objects), or a ResultSet object. Each of these classes has a getWarnings method, which you must invoke in order to see the first warning reported on the calling object. If getWarnings returns a warning, you can call the SQLWarning method getNextWarning on it to get any additional warnings. Executing a statement automatically clears the warnings from a previous statement, so they do not build up. This means, however, that if you want to retrieve warnings reported on a statement, you must do so before you execute another statement.
The following methods from JDBCTutorialUtilities.java illustrate how to get complete information about any warnings reported on Statement or ResultSet objects:
The most common warning is a DataTruncation warning, a subclass of SQLWarning . All DataTruncation objects have a SQLState of 01004 , indicating that there was a problem with reading or writing data. DataTruncation methods let you find out in which column or parameter data was truncated, whether the truncation was on a read or write operation, how many bytes should have been transferred, and how many bytes were actually transferred.
Categorized SQLExceptions
Your JDBC driver might throw a subclass of SQLException that corresponds to a common SQLState or a common error state that is not associated with a specific SQLState class value. This enables you to write more portable error-handling code. These exceptions are subclasses of one of the following classes:
- SQLNonTransientException
- SQLTransientException
- SQLRecoverableException
See the latest Javadoc of the java.sql package or the documentation of your JDBC driver for more information about these subclasses.
Other Subclasses of SQLException
The following subclasses of SQLException can also be thrown:
- BatchUpdateException is thrown when an error occurs during a batch update operation. In addition to the information provided by SQLException , BatchUpdateException provides the update counts for all statements that were executed before the error occurred.
- SQLClientInfoException is thrown when one or more client information properties could not be set on a Connection. In addition to the information provided by SQLException , SQLClientInfoException provides a list of client information properties that were not set.
Источник
Sql error 0 sqlstate null
Cyclone |
|
||
Шустрый Профиль Репутация: нет При возникновении исключительных ситуаций, например нарушение ограничений в БД при работе с Hibernate (org.hibernate.exception.ConstraintViolationException) среда NetBeans выводит очень полезную информацию об ошибке перед stacktrace’ом:
Очень хочется программно получить этот текст (ERROR: update or delete. Подробности: . ), однако сколько я не перебирал методов объекта Exception — получить его не удалось. Если важно — среда NetBeans IDE 6.7.1. |
|||
|
Samotnik |
|
|||
Super star ! Профиль Репутация: 5 пиши логи в log4j. IDE не всегда в себя все ошибки записывает, а если и записывает, то бывает что не полностью. Добавлено через 2 минуты и 33 секунды
|
||||
|
Cyclone |
|
||
Шустрый Профиль Репутация: нет Вы, кажется, не поняли. я хочу получить этот текст в Stirng объекте при обработке исключения. e.printStackTrace() печатает: e.getMessage() и e.getLocalizedMessage() возвращают: e.toString() тоже не то, что надо. А как получить вот этот текст «. Подробности: Key (id)=(53) is still referenced from table «work_item». «?
|
|||
|
Старовъръ |
|
||
Опытный Профиль Репутация: 1 |
|||
|
Samotnik |
|
||
Super star ! Профиль Репутация: 5 |
|||
|
Cyclone |
|
|||
Шустрый Профиль Репутация: нет Что же непонятного я говорю. При работе сервлета на сервере GlassFish выбрасывается исключение (org.hibernate.exception.ConstraintViolationException), и в консоли среды NetBeans печатается следующий текст:
Мне очень хочется получить в объекте String часть текста, выделенную жирным. Вот так я перехватываю исключение, пытаясь получить этот текст:
«); |
Приведённые методы печатают следующее:
Цитата |
e.toString(): org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update e.getMessage(): Could not execute JDBC batch update e.getLocalizedMessage(): Could not execute JDBC batch update |
e.printStackTrace(out):
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update at
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71) at
(пропущено)
. 44 more
Как видите, часть текста, выделенную сверху жирным, ни одним из приведённых методов, получить не удалось.
Как мне получить выделенный текст в виде объекта String при обработке исключения?
Выяснять причину ошибки в этой теме не надо.
Разбирать код сервлета не надо.
Объяснять, как пользоваться try-catch, не надо.
Надо только получить выделенный жирным текст в String.
Старовъръ |
|
||
Опытный Профиль Репутация: 1 |
|||
|
Cyclone |
|
||||
Шустрый Профиль Репутация: нет Но нутром чую — что-то лишнее лепишь у себя в приложении
выводит в консоль:
Снова не то, что надо. |
|||||
|
Старовъръ |
|
||
Опытный Профиль Репутация: 1 |
|||
|
Cyclone |
|
||
Шустрый Профиль Репутация: нет
|
|||
|
Старовъръ |
|
||
Опытный Профиль Репутация: 1 Ну у логгера есть настройки, ему можно указывать в каком формате и куда выводить данные. Нужно смотреть документацию. Сомневаюсь, что получится получить эти данные в строку. Это сообщение отредактировал(а) Старовъръ — 3.11.2009, 10:29 |
|||
|
chief39 |
|
||
карманная тигра Профиль Репутация: 11 Это лог хибернейта. Но это в консоль или иной аутпут пойдёт, то ись туда, куда настроен вывод логфоржи. Можно подумать насчёт того чтоб писать в какой-нить поток аппендером(настроить этот вывод), а оттуда уже читать ручками. Ну например в файл из из файла Теоретически Хибер разработчики посчитали что эту инфу нужно только логгировать, а не писать в ксепшн Приведи полностью стектрейс, посмотрим откуда летит, глянем исходники. Если чётко отвечать на чёткий вопрос — то НИКАК. Ну, разумными пряморукими методами, по крайней мере Люди — это свечи. Они либо горят, либо их — в жопу!(с) |
|||
|
Samotnik |
|
|||||
Super star ! Профиль Репутация: 5
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.
[ Время генерации скрипта: 0.1348 ] [ Использовано запросов: 21 ] [ GZIP включён ] Источник Adblock |
I’m really unsure how to proceed here and have googled the heck out of this issue. Any and all advice would be very much appreciated.
Link to repo: https://github.com/Trevorton27/moviesAPI
Entity for Ratings Table:
using Microsoft.AspNetCore.Identity; using System.ComponentModel.DataAnnotations; namespace MoviesAPI.Entities; public class Rating { public int Id { get; set; } [Range(1, 5)] public int Rate { get; set; } public int MovieId { get; set; } public Movie Movie { get; set; } public string UserId { get; set; } public IdentityUser User { get; set; } }
Migration:
using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace MoviesAPI.Migrations { public partial class addedRatingsTable : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "Ratings", columns: table => new { Id = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Rate = table.Column<int>(type: "integer", nullable: false), MovieId = table.Column<int>(type: "integer", nullable: false), UserId = table.Column<string>(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Ratings", x => x.Id); table.ForeignKey( name: "FK_Ratings_AspNetUsers_UserId", column: x => x.UserId, principalTable: "AspNetUsers", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Ratings_Movies_MovieId", column: x => x.MovieId, principalTable: "Movies", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateIndex( name: "IX_Ratings_MovieId", table: "Ratings", column: "MovieId"); migrationBuilder.CreateIndex( name: "IX_Ratings_UserId", table: "Ratings", column: "UserId"); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "Ratings"); } } }
Stack trace:
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while saving the entity changes. See the inner exception for details.
---> Npgsql.PostgresException (0x80004005): 23503: insert or update on table "Ratings" violates foreign key constraint "FK_Ratings_Movies_MovieId"
DETAIL: Detail redacted as it may contain sensitive data. Specify 'Include Error Detail' in the connection string to include this information.
at Npgsql.Internal.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|211_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) in Npgsql.dll:token 0x6000abb+0x49e
at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) in Npgsql.dll:token 0x60004ce+0x796
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken) in Npgsql.dll:token 0x60003c7+0x42a
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken) in Npgsql.dll:token 0x60003c7+0x19
at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) in Npgsql.dll:token 0x60003c2+0xa5
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) in Microsoft.EntityFrameworkCore.Relational.dll:token 0x60004dd+0x86e
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) in Microsoft.EntityFrameworkCore.Relational.dll:token 0x60004dd+0x86e
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken) in Microsoft.EntityFrameworkCore.Relational.dll:token 0x600039d+0xd7
Exception data:
Severity: ERROR
SqlState: 23503
MessageText: insert or update on table "Ratings" violates foreign key constraint "FK_Ratings_Movies_MovieId"
Detail: Detail redacted as it may contain sensitive data. Specify 'Include Error Detail' in the connection string to include this information.
SchemaName: public
TableName: Ratings
ConstraintName: FK_Ratings_Movies_MovieId
File: d:pginstaller_13.autopostgres.windows-x64srcbackendutilsadtri_triggers.c
Line: 2476
Routine: ri_ReportViolation
--- End of inner exception stack trace ---
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken) in Microsoft.EntityFrameworkCore.Relational.dll:token 0x600039d+0x25d
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) in Microsoft.EntityFrameworkCore.Relational.dll:token 0x60003d4+0x336
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) in Microsoft.EntityFrameworkCore.Relational.dll:token 0x60003d4+0x4ee
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) in Microsoft.EntityFrameworkCore.Relational.dll:token 0x60003d4+0x6d6
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken) in Microsoft.EntityFrameworkCore.dll:token 0x60025ce+0x9d
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) in Microsoft.EntityFrameworkCore.dll:token 0x60025d2+0xc7
at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken) in Npgsql.EntityFrameworkCore.PostgreSQL.dll:token 0x60002b7+0x93
at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) in Microsoft.EntityFrameworkCore.dll:token 0x6000094+0x171
at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) in Microsoft.EntityFrameworkCore.dll:token 0x6000094+0x3f1
at MoviesAPI.Controllers.RatingsController.Post(RatingDTO ratingDTO) in C:UsersspiraOneDriveDocumentssoftware-development-mastery-courseC#moviesAPImoviesAPIMoviesAPIMoviesAPIControllersRatingsController.cs:line 57
at lambda_method271(Closure , Object )
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x6000fc3+0x5b
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x60009c0+0x67
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x60009bd+0x161
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x60009ba+0x15
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x60009b5+0x3c1
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x60009c2+0x6e
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x6000a86+0x6a
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x6000a7b+0x15
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x6000a71+0x7a0
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x6000a81+0x6e
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x6000a7d+0x77
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) in Microsoft.AspNetCore.Mvc.Core.dll:token 0x6000a7d+0xfb
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) in Microsoft.AspNetCore.Routing.dll:token 0x60000ab+0x5e
at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult) in Microsoft.AspNetCore.Authorization.Policy.dll:token 0x600001b+0x303
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) in Microsoft.AspNetCore.Authorization.Policy.dll:token 0x6000013+0x3e9
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) in Microsoft.AspNetCore.Authentication.dll:token 0x6000049+0x3be
at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext) in Swashbuckle.AspNetCore.SwaggerUI.dll:token 0x6000002+0x1ce
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider) in Swashbuckle.AspNetCore.Swagger.dll:token 0x6000009+0x8e
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context) in Microsoft.AspNetCore.Diagnostics.dll:token 0x60000aa+0x82
HEADERS
Accept: application/json, text/plain, /
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,ja;q=0.8
Authorization: bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImJhbmFuYWNhdEBiYW5hbmFjYXQuY29tIiwiZXhwIjoxNjY1NTQzMDU4fQ.ba184TGP3aw91mCUoxMD_pvCMBtkoDturhOBxP6hfZg
Connection: close
Content-Length: 26
Content-Type: application/json
Host: localhost:44381
Referer: http://localhost:3000/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36
sec-ch-ua: «Chromium»;v=»94″, «Google Chrome»;v=»94″, «;Not A Brand»;v=»99″
dnt: 1
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: «Windows»
origin: http://localhost:3000
sec-fetch-site: cross-site
sec-fetch-mode: cors
sec-fetch-dest: empty`