2016-03-23 2 views
0

In meinem Projekt verwende ich OData 3.0 und ich muss Fehler behandeln, die von SQL gespeicherten Prozedur stammt. Hier ist der Controller-Code:OData-Controller gibt verschiedene Fehler für lokale und andere für remote Maschine zurück

public class StartProductionBatchListController : ODataController { 
    private SitContext<StartProductionBatchModel> db = new SitContext<StartProductionBatchModel>(); 

    [EnableQuery] 
    [SITAuthorize("/production/ordersOverview")] 
    public DbRawSqlQuery<StartProductionBatchModel> GetStartProductionBatchList([FromODataUri] string entryId) 
    { 
     Dictionary<string, string> parameters = new Dictionary<string, string>(); 

     parameters.Add("ENTRY_ID", entryId); 

     return db.ExecuteProcedure("StartProductionBatch", parameters); 
    } 
} 

Im Fall eines Fehlers in der gespeicherten Prozedur die Ausnahme ausgelöst wird SQL-Befehl RAISERROR verwenden.

Auf meiner Client-Seite erhalte ich zwei verschiedene Antworten - wenn ich von localhost verbinden, bekomme ich diese:

{ 
    "odata.error":{ 
    "code":"","message":{ 
     "lang":"en-US","value":"An error has occurred." 
    },"innererror":{ 
     "message":"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.","type":"System.InvalidOperationException","stacktrace":"","internalexception":{ 

     "message":"The following materials are not available on the line: 562942", 

"type":"System.Data.SqlClient.SqlException","stacktrace":" 

    ... there is the entire stack here 

     } 
    } 
    } 
} 

... wo ich die Fehlermeldung auf dem (Die folgenden Materialien sind nicht verfügbar lesen Leitung: 562.942)

Wenn ich die gleiche Sache aus dem Remote-Computer zu tun, hier ist das, was ich zurück:

{ 
    "odata.error":{ 
    "code":"","message":{ 
     "lang":"en-US","value":"An error has occurred." 
    } 
    } 
} 

ich meinen Setup IIS versucht, die detaillierten Fehler zurückzukehren (s (<httpErrors errorMode="Detailed" /> in web.config), obwohl es ein Sicherheitsrisiko sein kann (nicht wirklich in diesem Fall ist es eine Intranet-Anwendung nicht im Internet veröffentlicht), aber nichts half.

Danke für jede Hilfe.

Antwort

Verwandte Themen