Sembra che si debba implementare un'interfaccia IStatusCodeHandler
. Fornirò presto i dettagli.
Secondo il documentation, ho trovato alcuni articoli su questo:
Così il vostro codice dovrebbe essere simile a questo:
public class StatusCodeHandler : IStatusCodeHandler
{
private readonly IRootPathProvider _rootPathProvider;
public StatusCodeHandler(IRootPathProvider rootPathProvider)
{
_rootPathProvider = rootPathProvider;
}
public bool HandlesStatusCode(HttpStatusCode statusCode, NancyContext context)
{
return statusCode == HttpStatusCode.NotFound;
}
public void Handle(HttpStatusCode statusCode, NancyContext context)
{
context.Response.Contents = stream =>
{
var filename = Path.Combine(_rootPathProvider.GetRootPath(), "content/PageNotFound.html");
using (var file = File.OpenRead(filename))
{
file.CopyTo(stream);
}
};
}
}
modo che possiamo vedere qui:
- un costruttore per la classe con informazioni sulla vostra radice corrente
StatusCodeHandler(IRootPathProvider rootPathProvider)
- A metodi che decide, sono abbiamo bisogno di gestire la richiesta corrente con questa classe
HandlesStatusCode(HttpStatusCode statusCode, NancyContext context)
- Metodo di gestione che aggiunge al contenuto dell'errore
Response
il contenuto del file di errore personalizzato dalla directory radice
Handle(HttpStatusCode statusCode, NancyContext context)
Se per qualche motivo questo non è un'opzione per voi, è sufficiente creare un HttpResponse che aveva bisogno di stato e il testo, in questo modo:
public class MainModule : NancyModule
{
public MainModule()
{
Get["/"] = parameters => {
return new Response {
StatusCode = HttpStatusCode.BadRequest, ReasonPhrase = "Hello World"
};
};
}
}
funziona questo aiuto http://stackoverflow.com/questions/21099843/risposta-con-entrambi-corpo-e-stato-codice-in-nancy – csprabala
Io voto per chiudere la mia stessa domanda come duplicato. La domanda trovata da @csprabala è esattamente la domanda che sto ponendo e la risposta funziona. –
Questo dovrebbe essere chiuso, il link sopra è sufficiente. –