2016-03-23 14 views
0

私のプロジェクトでは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を試してみましたインターネット上に公開されていないイントラネットアプリケーションですが、何も助けてくれませんでした。

ありがとうございました。

答えて

0

あなたはこのようなHttpConfigurationクラスにIncludeErrorDetailPolicyプロパティを設定する必要があります。

config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; 

詳細はここで見つけることができます:https://msdn.microsoft.com/en-us/library/system.web.http.httpconfiguration.includeerrordetailpolicy(v=vs.108).aspx

+0

おかげで、それは私が探していたものだ、あなたは私のヒーローです。 –

関連する問題