none
Web Service Soap extension , how set attribute

    Dotaz

  • Dobry den.
    Rad by som sa opytal, ako sa daju nastavovat atributi soap rozsirenia na strane klienta.

    Napriklad, pouzitie rozsirenia vo webovej sluzbe:

    [WebMethod]
    [EncryptMessage(XPathEncryption = "//soap:Body/*/*", StrKey = "pass")]
    public string test()
    {
    return "test ok";
    }

     

    Implementacia na strane klienta v triede proxy:

    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/test", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
    [EncryptMessage(XPathEncryption = "//soap:Body/*/*", StrKey = "pass")]
    public string test() {
    object[] results = this.Invoke("test", new object[0]);
    return ((string)(results[0]));
    }
    Atributi su nastavovane v kode  napevno :  [EncryptMessage(XPathEncryption = "//soap:Body/*/*", StrKey = "pass")]

    Existuje nejaky sposob akym, mozem nastavit tieto atributi este pred pouzitim samotneho soap rozsirenia. Napriklad zavolanym nejakej metody v sluzbe aj na strane klienta?? Nakolko metoda, ktore dedi z SoapExtensionAttribute, sa na strane klienta z proxy triedy neda zavolat...Dakujem

    8. září 2009 8:38

Odpovědi

  • Dobrý den,

    moc nechápu co Vám nefunguje, ale pokud chcete používat Soap extenze musíte nadefinovat třídu dědící z abstraktní třídy SoapExtension a poté nadefinovat samotný atribut, tedy třídu dědící z SoapExtensionAttribute a překrýt vlastnost ExtensionType, kde vrátíte typ vaší extenzní třídy.  Tento atribut následně můžete zpracovat v metodě GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute) ze SoapExtension, která vrací objekt initializer do metody Initalize, která se volá při prvním zavolání WebMetody.
    15. září 2009 9:22