Gå til innhold

Egendefinerte feilmeldinger ved argumentfeil på WebServices


Anbefalte innlegg

Sitter og funderer litt, og finner ikke uten videre noe svar.

 

Eks jeg har koden i min WebService:

[WebMethod(Description="Min Funksjon!")]
public string Test(int a)
{
  return a.ToString();
}

(en veldig fornuftig funksjon)

 

Men i alle fall. Hvis noen kaller funksjonen uten parameter, eller som Test("") eller lignende får man en feilmelding som ligner på denne:

System.ArgumentException: Cannot convert  to System.Boolean.
Parameter name: type ---> System.FormatException: String was not recognized as a valid Boolean.
  at System.Boolean.Parse(String value)
  at System.String.System.IConvertible.ToBoolean(IFormatProvider provider)
  at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
  at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
  --- End of inner exception stack trace ---
  at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
  at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
  at System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request)
  at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
  at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

...som ren tekst.

 

Jeg vil gjerne returnere noe som

 

<result>
 <success>False</success>
 <errormessage>argument exception: type</errormessage>
</result>

 

Hvordan kan jeg få til dette?

Lenke til kommentar
Videoannonse
Annonse

Prøvde denne:

 

public Content() 
{
 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
 HttpContext.Current.Response.Write("JALLA");
}

 

Men den ble aldri kjørt, virker det som... :\

 

Edit: Spørsmålet er jo da også om Constructoren til en WebService kjøres i det hele tatt når man Invoker funksjonene via HTTP Form data?

Endret av Manfred
Lenke til kommentar
AppDomain.CurrentDomain.UnhandledException

En UnhandledExceptionHandler er for exceptions som ikke fanges opp av applikasjonen din. Kan typisk bruke hvis du vil vise slik boks "Programmet har kræsjet, vil du sende data til utviklerne?" -- i akkurat det tilfellet har jeg sett det blitt brukt hvertfall. Men det har ingenting med Webservices å gjøre :)

 

I Webservices/SOAP er det allerede definert Fault-objekter. .Net sine exceptions blir konvertert til SOAP-Faults på server-siden og på klienten blir disse demarshaled tilbake til .Net-exceptions. Eller Java-exceptions. Osv osv.

 

Her vil du egentlig returnere noe annet en SOAP-Fault ved exceptions. Det tror jeg ikke er helt rett fram dessverre, eller om det i det hele tatt er mulig. Jeg tipper du i det minste må arve en spesiell klasse og at du ikke kan velge så veldig hvordan XMLen skal se ut, det ville jo brutt med SOAP.

Lenke til kommentar

Jaja web-utvikling er noe dritt.

 

Problemene en støter på er aldri om hvordan en skal løse et kinkig problem, det gr som regel i "hvordan gjør jeg dette i [sett inn rammeverk her]?"

 

Men desverre et latterlig mye mindre marked for utfordrende ting :( litt snodig at det som betales best for tiden også er det som krever minst tenkearbeid.

 

"La brukeren logge inn eller registrere seg"

"Lag en liste"

"La brukeren skrive inn et eller annet"

"Behandle informasjonen"

"Vis en ny liste"

"Osv"

Webprogrammering i et nøtteskall :D

Lenke til kommentar
Jaja web-utvikling er noe dritt.

Det finnes artig webutvikling også :) Det spørs bare hvor og med hva man jobber!

...

Webprogrammering i et nøtteskall :D

Jupp. Derfor har man generiske views i Django for list, detail og edit :) Det er jo de tre funksjonene man som regel trenger.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...