Avatar billede qumle Nybegynder
24. september 2004 - 10:49 Der er 1 kommentar og
1 løsning

method can not be reflected

Jeg har en webservice med en masse webmethods i...

Efter at have tilføjet en ny webmethod, DeleteDocumentByUrl får jeg følgende fejl, når jeg kalder en metode fra clienten(ikke kun den nye metode):

InvalidOperationException ocurred in system.web.services.dll

Method DeleteDocumentByUrl can not be reflected.

Jeg har genereret proxy klasser til både client og server vha. wsdl.exe i Visual studio, på baggrund af en wsdl.

lidt kode:

client proxy:

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://isb.oio.dk/oioservice/service/public/2/DeleteDocumentByUrl", RequestElementName="DeleteDocumentByUrlParam",
RequestNamespace="http://isb.oio.dk/oioservice/service/public/2/",
ResponseElementName="BooleanReturn",
ResponseNamespace="http://isb.oio.dk/oioservice/service/public/2/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("Boolean")]
        public bool DeleteDocumentByUrl(int ReviewRequestID, string DocumentUrl) {
            object[] results = this.Invoke("DeleteDocumentByUrl", new object[] {
                        ReviewRequestID,
                        DocumentUrl});
            return ((bool)(results[0]));
        }

server proxy klasse:

[System.Web.Services.WebMethodAttribute()]

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://isb.oio.dk/oioservice/service/public/2/DeleteDocumentByUrl", RequestElementName="DeleteDocumentByUrlParam",
RequestNamespace="http://isb.oio.dk/oioservice/service/public/2/",
ResponseElementName="BooleanReturn",
ResponseNamespace="http://isb.oio.dk/oioservice/service/public/2/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]

[return: System.Xml.Serialization.XmlElementAttribute("Boolean")]
public abstract bool DeleteDocumentByUrl(int ReviewRequestID, string DocumentUrl);


server implementering:


[System.Web.Services.WebMethodAttribute()]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://isb.oio.dk/oioservice/service/public/2/DeleteDocumentByUrl",
RequestNamespace="http://isb.oio.dk/oioservice/service/public/2/",
ResponseElementName="BooleanReturn",
ResponseNamespace="http://isb.oio.dk/oioservice/service/public/2/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("Boolean")]
        public override bool DeleteDocumentByUrl(int ReviewRequestID, string DocumentUrl)
        {
            //do something       
        }

det ser lidt uoverskueligt ud med alle de attributter men det må være her et sted fejlen ligger...

Nogen der kan hjælpe, evt. bare med lidt generel info om reflection og hvilke typer fejl det kan give.

Så vidt jeg har forstået er reflection noget med at bestemme typer o.lign "on the fly" eller runtime???
Avatar billede qumle Nybegynder
24. september 2004 - 11:34 #1
jeg fik løst problemet...

der var tilsyneladende et problem med mit returObject "BooleanReturn".

det så sådan ud.
<element name="BooleanReturn" type="boolType"/>
<complexType name="boolType">
    <sequence>
        <element name="Boolean" type="s:boolean"
    </sequence>
</complexType>

der var måske noget navneforvirring med det interne element Boolean???

Jeg bruger i stedet dette returelement som er genereret af wsdl.exe til en anden metode.

<element name="DeleteDocumentResponse">
    <complexType>
        <sequence>
            <element name="DeleteDocumentResult" type="s:boolean"/>
        </sequence>
    </complexType>
</element>

måske har wsdl.exe en præference for anonyme typer? jeg har oplevet noget lignende mht. serializering af objecter...

kommentarer er velkommen da jeg ikke ved hvorfor min løsning virker, bare at den gør det
Avatar billede qumle Nybegynder
13. oktober 2004 - 10:51 #2
Svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester