【问题标题】:ServiceStack Soap Retrieve Soap HeadersServiceStack Soap 检索 Soap 标头
【发布时间】:2013-06-10 04:53:28
【问题描述】:

我需要从传入消息中提取一个soap Header 属性到我的服务。我正在使用服务堆栈并且一直在环顾四周,但在任何地方都找不到好的答案。谁能告诉我如何从请求对象中检索 SOAP 标头属性?

这是我的服务

public class NotificationServices : Service
{
    public GetAccountNotificationResponse Any (GetAccountNotification request)
    {
         //Do Some stuff Here!!!
         //Need to retrieve some header here
    }
}

任何帮助将不胜感激。如果您知道无法完成的事实,请也告诉我。

谢谢

【问题讨论】:

    标签: c# asp.net web-services soap servicestack


    【解决方案1】:

    在最新版本的ServiceStack v3.9.49 中,您可以使用IHttpRequest.GetSoapMessage() 扩展方法访问请求SOAP 消息(用于SOAP 请求),例如:

    public class NotificationServices : Service
    {
        public GetAccountNotificationResponse Any (GetAccountNotification request)
        {
             //Do Some stuff Here!!!
             var requestSoapMessage = base.Request.GetSoapMessage();
        }
    }
    

    来自Serialization / Deserialization wiki

    您可以使用 IHttpRequest.GetSoapMessage() 扩展方法在您的服务中使用 SOAP 端点访问原始 WCF 消息,例如:

    Message requestMsg = base.Request.GetSoapMessage();
    

    要告诉 ServiceStack 完全跳过反序列化 SOAP 请求,请将 IRequiresSoapMessage 接口添加到您的请求 DTO,例如:

    public class RawWcfMessage : IRequiresSoapMessage {
        public Message Message { get; set; }
    }
    
    public object Post(RawWcfMessage request) { 
        request.Message... //Raw WCF SOAP Message
    }
    

    【讨论】:

    • 谢谢你,我明天回去工作时试试这个:)
    • 有没有办法获得整个消息的字符串表示形式,我可以将其保存到数据库中,例如记录它?我尝试了 .ToString() 方法,但我对一些 xmlReader 异常感到奇怪。
    猜你喜欢
    • 2015-04-13
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多