Я использую Nancy для создания веб-api. У меня есть подписанный токен, который передается от пользователя для аутентификации. Эта проверка подлинности выполняется в методе RequestStartup в моем собственном Bootstrapper. Теперь, в некоторых случаях, например, когда я не могу смириться с подписанным токеном, я хотел бы просто создать исключение и обработать его с помощью OnError hanhdler в Nancy. Однако исключение, возникшее до того, как RequestStartup будет финишировано, не поймано. Запрос генерирует ошибку 500, и я хотел бы вернуть что-то еще с моей собственной информацией об ошибке.Nancy Exception in RequestStartup
У меня есть очевидный случай, когда я генерирую исключение, а также возможности исключения, которое вызывается методом GetIdentity().
Я ищу информацию о том, как с этим справиться.
protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context)
{
base.RequestStartup(container, pipelines, context);
pipelines.OnError.AddItemToStartOfPipeline((ctx, exception) =>
container.Resolve<IErrorHandler>().HandleException(ctx, exception));
var identity = container.Resolve<IAuthenticationController>().GetIdentity();
var configuration = new StatelessAuthenticationConfiguration(_ => identity);
StatelessAuthentication.Enable(pipelines, configuration);
var logManager = new LogManager(context);
pipelines.AfterRequest.AddItemToEndOfPipeline(_ => logManager.Log());
try
{
X509Certificate2 clientCert = context.Request.ClientCertificate as X509Certificate2;
container.Resolve<ICertificateValidator>().Validate(clientCert);
}
catch (Exception ex)
{
throw new MklServerAuthenticationException(ErrorCodes.WrongOrNonexistingCertificate, ex);
}
}
Вернее, что вышеперечисленное реализовано на крючке BeforeRequest и сделайте свой материал там. – TOMTEFAR