Domanda

Sono la gestione degli errori in ASP.NET MVC con l'invio di un ID di errore dal Application.OnError ad un'azione di controllo, con l'aggiunta di un valore di dati percorso che dà l'ID di errore:

Global.asax.cs / OnError:

var routeData = new RouteData();
routeData.DataTokens.Add("errorKey", errorId);
var context = new RequestContext(new HttpContextWrapper(Context), routeData);
errorController.Execute(context);

E poi leggerlo nel controller / action:

object errorKey = RouteData.DataTokens["errorKey"];

Sulla mia macchina locale funziona benissimo, ma sui server ho cercato l'errorKey non viene trasmesso.

Che cosa potrebbe essere possibili ragioni per questo?


Una nuova osservazione, quando il sito è in esecuzione un server web:

  • Se visito da un browser sul server web stesso, i dati vengono trasferiti percorso bene
  • Se visito da un'altra macchina, i dati percorso è non trasferiti
È stato utile?

Soluzione 2

ho trovato il motivo: Nel web.config è stato fissato il seguente:

<system.webServer>
<httpErrors errorMode="Custom">

che ha causato l'azione da eseguire due volte: la prima volta con l'errorKey, ma la seconda e l'ora di decidere senza l'errorKey. Ho cambiato in

<system.webServer>
<httpErrors errorMode="Detailed">

e l'azione è stata eseguita solo una volta, con l'errorKey.

Altri suggerimenti

Non ho mai cercato di utilizzare i dati di percorso in modo tale, si potrebbe voler guardare in questo posto

HttpContext.Items [ "errorKey"]

gli articoli sono ambito alla vostra richiesta.

si può anche voler guardare TempData [ "errorKey"] trovato sul controller:

ASP.NET TempData persiste tra le richieste

Per quanto riguarda i valori nei dati di percorso, dare un'occhiata alla RouteData.Values ??[ "errorKey"]

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top