.Net 5.0 中的 Endpoint.Behaviors 和 clientRuntime.MessageInspectors 在哪里?
Where are Endpoint.Behaviors and clientRuntime.MessageInspectors in .Net 5.0?
对于 4.8 之前的所有 .Net 版本,可以使用 IEndpointBehavior / IClientMessageInspector
轻松捕获使用 WCF 使用的 SOAP 服务的所有传入和传出流量以进行日志记录,例如:https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.dispatcher.iclientmessageinspector.beforesendrequest?view=netframework-4.8
我想知道如何恢复它,或者在 .Net 5.0 中达到与以前相同的目的。我需要在日志文件中跟踪所有 SOAP 交换,以前我只需要这样做 :
public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
_logger.Debug("Reply received: " + Environment.NewLine + "{0}", reply.ToString());
}
public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
{
_logger.Debug("Sending request: " + Environment.NewLine + "{0}", request.ToString());
return null;
}
要使其正常工作,您需要 clientRuntime.MessageInspectors 和 client.Endpoint.Behaviors 来注册 类。
尽管我已经注册了可用于 System.ServiceModel 的 nuget 包,尤其是 System.ServiceModel.Primitives.dll,但这些属性似乎不再存在。
实际上,这些功能仍然存在,并且看起来像以前一样工作。属性略有变化。
client.Endpoint.Behaviors.Add(new LoggerEndpointBehavior(_logger));
变成了 client.Endpoint.EndpointBehaviors.Add(new LoggerEndpointBehavior(_logger));
和
clientRuntime.MessageInspectors.Add(new LoggerClientMessageLoggerInspector(_logger));
变成了 clientRuntime.ClientMessageInspectors.Add(new LoggerClientMessageLoggerInspector(_logger));
其他一切都与第一个 link 中的示例相同。
我很惊讶在迁移时没有看到 Intellisense 的这些建议,但它现在可以工作了!
对于 4.8 之前的所有 .Net 版本,可以使用 IEndpointBehavior / IClientMessageInspector
轻松捕获使用 WCF 使用的 SOAP 服务的所有传入和传出流量以进行日志记录,例如:https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.dispatcher.iclientmessageinspector.beforesendrequest?view=netframework-4.8
我想知道如何恢复它,或者在 .Net 5.0 中达到与以前相同的目的。我需要在日志文件中跟踪所有 SOAP 交换,以前我只需要这样做 :
public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
_logger.Debug("Reply received: " + Environment.NewLine + "{0}", reply.ToString());
}
public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
{
_logger.Debug("Sending request: " + Environment.NewLine + "{0}", request.ToString());
return null;
}
要使其正常工作,您需要 clientRuntime.MessageInspectors 和 client.Endpoint.Behaviors 来注册 类。
尽管我已经注册了可用于 System.ServiceModel 的 nuget 包,尤其是 System.ServiceModel.Primitives.dll,但这些属性似乎不再存在。
实际上,这些功能仍然存在,并且看起来像以前一样工作。属性略有变化。
client.Endpoint.Behaviors.Add(new LoggerEndpointBehavior(_logger));
变成了 client.Endpoint.EndpointBehaviors.Add(new LoggerEndpointBehavior(_logger));
和
clientRuntime.MessageInspectors.Add(new LoggerClientMessageLoggerInspector(_logger));
变成了 clientRuntime.ClientMessageInspectors.Add(new LoggerClientMessageLoggerInspector(_logger));
其他一切都与第一个 link 中的示例相同。 我很惊讶在迁移时没有看到 Intellisense 的这些建议,但它现在可以工作了!