简体   繁体   English

在ASMX服务中如何更改ResponseHeader ElementName

[英]In ASMX service how to change ResponseHeader ElementName

I am creating ASMX web service in .Net for javaclient. 我在.net中为javaclient创建ASMX Web服务。 Provided soap looks like this 提供的肥皂看起来像这样

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pus="http://www.example.org/pusheventservice/">
<soapenv:Header>
<ServiceHeader>
<TransactionID>258350</TransactionID>
<TransactionDate>2014/12/21</TransactionDate>.......

and javaclient expects response SOAP 并且javaclient期望响应SOAP

like this 像这样

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pus="http://www.example.org/pusheventservice/">
<soapenv:Header>
<ResponseServiceHeader>
<TransactionID>258350</TransactionID>
<TransactionDate>2014/12/21</TransactionDate>....

means requestElement is 'ServiceHeader' and ResponseElement must be 'ResponseServiceHeader' 表示requestElement为'ServiceHeader',ResponseElement必须为'ResponseServiceHeader'

I WebMethod i achieved this but unable in Header. 我通过WebMethod实现了这一点,但是无法在Header中实现。

Is it Possible?? 可能吗?? If Yes how?? 如果是,怎么办? Also I Cant use WCF.... 我也不能使用WCF。

EDITS EDITS

namespace PushWS
{
[WebService(Namespace = "http://localhost:60463/PushEvent.asmx")]
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
[SoapDocumentService(SoapBindingUse.Literal, SoapParameterStyle.Bare, RoutingStyle = SoapServiceRoutingStyle.SoapAction)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class PushEvent : System.Web.Services.WebService
{
    public ServiceHeader serviceHeader = null;
    public SoapUnknownHeader[] userCredentials;
    [WebMethod(Description = "updateEvent receives XML from Client")]
    [SoapHeader("serviceHeader", Direction = SoapHeaderDirection.InOut)]
    [SoapHeader("userCredentials", Required = true)]
    [return: XmlElement("EventResponse")]
    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://localhost:60463/PushEvent.asmx/updateEvent",
    RequestElementName = "updateEventRequest",
    ResponseElementName = "updateEventResponse")]
    public XmlElement updateEvent([XmlAnyElement]XmlElement MyPushEvent)
    {
           //Logic here
    }
    public class ServiceHeader : SoapHeader
    {
         public string TransactionID{get;set;}
         public string TransactionDate{get;set;}
    }
 }

Create a derived class for the response header: 为响应头创建一个派生类:

public class ResponseServiceHeader : ServiceHeader
{
}

public ServiceHeader serviceHeader = null;
public ResponseServiceHeader responseServiceHeader = null;

[SoapHeader("serviceHeader", Direction = SoapHeaderDirection.Int)]
[SoapHeader("responseServiceHeader", Direction = SoapHeaderDirection.Out)]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM