時々エラーが発生します:
There is not a header with name UserName and namespace http://www.website.com/ in the message.
スタックトレース
System.ServiceModel.Channels.MessageHeaders.GetHeader[T](文字列名、文字列 ns、文字列[] アクター) Common.Utilities.WCF.WcfCallContext.TryGetHeader(文字列キー) Common.Utilities.WCF.WcfCallContext.get_UserName()
ここに2つの方法があります:
private static string TryGetHeader( string key )
{
try
{
return GetHeader( key );
}
catch
{
return null;
}
}
private static string GetHeader( string key )
{
var headers = OperationContext.Current.IncomingMessageHeaders;
var value = headers.GetHeader<string>( key, "http://www.website.com/", "Project" );
return value;
}
}
したがって、TryGetHeader (try と catch を使用) は GetHeader を呼び出しています。明らかにそれは壊れます:
var value = headers.GetHeader<string>( key, "http://www.website.com/", "Project" );
それをTryGetHeader
エラーとしてキャッチせず、 を返さないのはなぜnull
ですか? ?GetHeader
でエラーでスローバックするのではなく、侵入して停止するかのようです。TryGetHeader