C#在invoke的返回值为null时捕获soap消息
当下面的代理Web服务返回空值时,我需要将返回的soap消息存储在数据库中,与特定的用户ID相对应。 我当前正在将soap消息捕获到TraceExtension类中的文本文件中。但是由于属性元数据是常量,我无法在运行时将UserID传递给这个类。有什么解决办法吗C#在invoke的返回值为null时捕获soap消息,c#,wcf,web-services,soap,attributes,C#,Wcf,Web Services,Soap,Attributes,当下面的代理Web服务返回空值时,我需要将返回的soap消息存储在数据库中,与特定的用户ID相对应。 我当前正在将soap消息捕获到TraceExtension类中的文本文件中。但是由于属性元数据是常量,我无法在运行时将UserID传递给这个类。有什么解决办法吗 [ TraceExtensions.TraceExtension(), System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use = System.Web.Ser
[ TraceExtensions.TraceExtension(), System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use = System.Web.Services.Description.SoapBindingUse.Literal)]
[return: System.Xml.Serialization.XmlElementAttribute("qualifyServicesResponse", Namespace = "")]
public qualifyServicesResponse qualifyServices([System.Xml.Serialization.XmlElementAttribute(Namespace = "")] qualifyServicesRequest qualifyServicesRequest, int UserID)
{
object[] results = this.Invoke("qualifyServices", new object[] {
qualifyServicesRequest, UserID});
return ((qualifyServicesResponse)(results[0]));
}
TraceExtension类如下所示:
<AttributeUsage(AttributeTargets.Method)> _
Public Class TraceExtensionAttribute
Inherits SoapExtensionAttribute
Private m_filename As String = "C:\trace\log.xml"
End Class
最后,我在BeforeSerialize中使用message.GetInParameterValue来获取用户ID:
Public Overrides Sub ProcessMessage(ByVal message As SoapMessage)
Select Case message.Stage
Case SoapMessageStage.BeforeSerialize
UserID = Convert.ToInt32(message.GetInParameterValue(1))
Case SoapMessageStage.AfterSerialize
WriteOutput(message)
Case SoapMessageStage.BeforeDeserialize
WriteInput(message)
Case SoapMessageStage.AfterDeserialize
End Select
End Sub
Public Overrides Sub ProcessMessage(ByVal message As SoapMessage)
Select Case message.Stage
Case SoapMessageStage.BeforeSerialize
UserID = Convert.ToInt32(message.GetInParameterValue(1))
Case SoapMessageStage.AfterSerialize
WriteOutput(message)
Case SoapMessageStage.BeforeDeserialize
WriteInput(message)
Case SoapMessageStage.AfterDeserialize
End Select
End Sub