WCF サービスへの要求と応答をログに記録しようとしています。私が今までやったことは次のとおりです。
public class OutputMessageInspector : IDispatchMessageInspector
{
int lastLogId;
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
// Parse request & read required information
// Insert request data into log tables
// Set lastLogId to the id created above
}
public void BeforeSendReply(ref Message reply, object correlationState)
{
// Parse reply
// Using lastLogId update the response column in database table
}
}
すべて正常に動作していますが、懸念事項が 1 つあります。
AfterReceiveRequest
正しいレコードが更新BeforeSendReply
されるように、同期で作業する必要があります。BeforeSendReply
私が念頭に置いているケースは、サービスが複数のクライアントから同時に呼び出されることです。質問:
lastLogId
複数のリクエストとレスポンスの間で混乱したりシャッフルしたりしませんか?- このロギング
BeforeSendReply
は、複数のクライアントが同時にサービスを呼び出している場合に特別に更新されますか? はいの場合は、私の心を安心させるために説明をお願いします。いいえの場合は、これに対するより良い解決策を提供してください。