[ kijara camado @ 15.09.2011. 07:11 ] @
Pravim web servis izmedju ostalog i za insert u bazu pri cemu treba da mi vrati ili SCOPE_IDENTITY() ili ex, evo koda:
Code:

    [WebMethod]
    public int InsertCustomer(string FirstName, string LastName, string Address, string City, string StateProvince, string PostalCode, string Country)
    {
        CustomersTableAdapter CustomerTA = new CustomersTableAdapter();
        if (FirstName.Length!=0)
        {
            int new_customerID = Convert.ToInt32(CustomerTA.InsertQuery(
                        FirstName,
                        LastName,
                        Address,
                        City,
                        StateProvince,
                        PostalCode,
                        Country
                        ));
            return new_customerID;

        }
        else
        {
            Exception ex = new Exception("FirstName can`t be null");
            return ex.Message;
        }
    }


I ovaj kod ne radi jer pri else bi trebao da vrati string, a ovde je public int i ne kompajlira se. Ja sam ovo resio tako sto sam umesto public int stavio public object i sad radi ok Jel moze neko da mi kaze kako se pravi metoda koja vraca po potrebi int, string, bool ili bar gde da procitam...
Pozz
[ mmix @ 15.09.2011. 08:24 ] @
remoj da vracas string. SOAP protokol ima podrsku za exception passing, dakle samo baci exception (throw new Exception....) a SOAP wrapper u .NETu ce to da zapakueje u SOAP Fault
[ Boris B. @ 16.09.2011. 14:53 ] @
@mmix: Napisao lik čak i magic workaround kako da na klijentu dobiješ pravi Exception a ne FaultMessage:
http://www.olegsych.com/2008/0...cf-using-exceptions-as-faults/
[ mmix @ 16.09.2011. 15:11 ] @
ako me secanje ne izdaje :) web service wrapper bi trebao da svaki exception prepakuje u <soap:fault> a klijent (.net) bi taj fault trebalo da preda kao System.Web.Services.Protocols.SoapException

e sad wcf je druga prica, nisam probao ali valjda bi trebalo da funkcionise slicna prica, tj ti bi uvek trebao da dobijes FaultException kao rezultat soap fault-a, ne? Pritom mozes da posaljes i paket uz FaultException po zelji. Mislim da je sve preko toga izivljavanje nad protokolom, posle sve te muke da uteras custom exception u SOAP pitanje je dal bi taj paket mogao da svari neki non-wcf klijent.
[ Boris B. @ 19.09.2011. 08:48 ] @
Faulte zapakovane na taj način definitivno neće moći da svari non-CLR klijent, jer se interno koristi NetDataContractSerializer koji serijalizuje CLR type informacije. Mada meni je sasvim dovoljan bio za moje skromne CLR2CLR potrebe...
[ kijara camado @ 19.09.2011. 12:28 ] @
Citat:
Boris B.: Faulte zapakovane na taj način definitivno neće moći da svari non-CLR klijent, jer se interno koristi NetDataContractSerializer koji serijalizuje CLR type informacije. Mada meni je sasvim dovoljan bio za moje skromne CLR2CLR potrebe...


Hmmmm, pa valjda uvek mogu da parsiraju xml ako nema custom shema, sa Odata/data servisima je to valjda i najbitnija stvar sto su atom/adam sheme pa ne morash/gledash da ne implementirash svoju/neku shemu vec koristish javnu!?! Ovo je IMHO najbitnija stvar sto se koristi standardizovana shema...

Ovo je pitanje, cisto me interesuje sta mislish, molio bih da ne shvatish kao neku vrstu napada jer mislim da prilicno vise znash od mene...
[ Boris B. @ 20.09.2011. 09:10 ] @
Sigh... Radi se o fault-ima, ne o generalnoj komunikaciji. Na onom linku sto sam postovao lik je osmislio sistem kako da u WCF-u napravis exception passing da radi transparentno preko machine boundary, jedino ogranicenje je da takve fault ce moci da upotrebi jedino WCF klijent. Ako neces ne moras da koristis, koristi stadardne SOAP faulte i pisi custom error handling u svakom klijentskom pozivu...
[ spajalica @ 23.11.2011. 15:44 ] @
Citat:
Jel moze neko da mi kaze kako se pravi metoda koja vraca po potrebi int, string, bool ili bar gde da procitam...

Ako koristis .NET Framework 4 mozes da koristis dynamic. Evo primera sa msdn:
Code:
class ExampleClass
{
    // A dynamic field.
    static dynamic field;

    // A dynamic property.
    dynamic prop { get; set; }

    // A dynamic return type and a dynamic paramater type.
    public dynamic exampleMethod(dynamic d)
    {
        // A dynamic local variable.
        dynamic local = "Local variable";
        int two = 2;

        if (d is int)
        {
            return local;
        }
        else
        {
            return two;
        }
    }
}


Vise procitaj na: http://msdn.microsoft.com/en-us/library/dd264741.aspx
[ mmix @ 23.11.2011. 20:56 ] @
Zar WS stack podrzava dynamic tipove?

Kako se to deklarise u WSDLu?