私のプロジェクトではOData 3.0を使用していますが、SQLストアドプロシージャに起因するエラーを処理する必要があります。ここで制御コードがある:ODataコントローラはローカルとリモートで異なるエラーを返します
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);
}
}
エラーの場合に例外がSQLコマンドRAISERRORを使用して上昇されるストアドプロシージャで。私のクライアント側で
私は2つの異なる応答を受け取る - 私はローカルホストから接続する場合、私はこの取得:私は(次の材料が上利用できないエラーメッセージを読むことができる
{
"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
}
}
}
}
を...行:562942)
私は、リモートコンピュータから同じことを行う場合は、ここで私は戻って得るものです:
{
"odata.error":{
"code":"","message":{
"lang":"en-US","value":"An error has occurred."
}
}
}
私は詳細なエラー(sのを返すために、セットアップに私のIISを試してみましたインターネット上に公開されていないイントラネットアプリケーションですが、何も助けてくれませんでした。
ありがとうございました。
おかげで、それは私が探していたものだ、あなたは私のヒーローです。 –