Webservice + DataAccessLayer = ....

0

Witam,

Mam następujący problem:

Gdy w wcftestcliencie odnoszę się do funkcji zwracającej zwykłego stringa, wszystko działa, string zwrócony.
Natomiast gdy tę samą funkcję zmuszam do utworzenia obiektu DataAccessLayer i odpalenia jakiejs procedury skladowej na bazie danych i przetworzeniu wyniku w serwisie tak, żeby do wcftestclienta wrocił string, tyle że z bazy, wyskakuje błąd:

[quote]
Failed to invoke the service. The service may be offline or inaccessible. Refer to the stack trace for details.[/quote]+ jakies errordetails
w których nie ma żadnych konkretów.

endpoint korzysta z wsHttpBinding.

Jakieś rady, sugestie? :)
Dzięki z góry za pomoc!

0

Przedebuguj czy WS się nie wywala przy korzystaniu z bazy danych.
Włącz sobie IncludeExceptionDetailsInFault

0

Na pewno wywala przy korzystaniu z bazy, a dokładnie to gdy korzystam z tych instrukcji:

            DataAccessLayer.Customer cust = new DataAccessLayer.Customer();
            cust.getCustomerById(id);

a oto dokładny błąd:

Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.

Server stack trace: 
   w System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
   w System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
   w System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   w System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
   w System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   w System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
   w System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   w System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   w IBaseClassService.GetBook(Int32 id)
   w BaseClassServiceClient.GetBook(Int32 id)

Nie wiem czy problemem gdzieś nie jest łączenie z bazą danych - Jak ma być rozwiązany problem connectionStringa?

0

Dodam jeszcze, że problem występuje podczas korzystania_z/tworzenia DataContextu

               MyDataContext customers = new MyDataContext();
                return customers.getCustomerById(id).AsEnumerable();

Tak jakby byl jakis problem z lifetimem tego datacontextu

0

Exception jest oczywisty, coś, gdzieś jest Null.
Jeżeli wywala się w linijkach wyżej to rozdziel to "customers.getCustomerById(id).AsEnumerable();"
tak abyś zobaczył czy getCustomerById faktycznie coś zwraca, może jest to Null i AsEnumerable się wywala?

0
dark_astray napisał(a)

Exception jest oczywisty, coś, gdzieś jest Null.
Jeżeli wywala się w linijkach wyżej to rozdziel to "customers.getCustomerById(id).AsEnumerable();"
tak abyś zobaczył czy getCustomerById faktycznie coś zwraca, może jest to Null i AsEnumerable się wywala?

No właśnie w ramach tej samej solucji, mam projekt winformsowy, który korzysta z tej samej metody i wszystko jest w porządku.
W zasadzie exception wyskakuje na linijce w której tworzony jest DataContext, czyli może być problem z connectionStringiem. Gdzieś wyczytałem że logowanie nie może być przez Windows Authentication, więc już zmieniłem na SQL Server Auth. ale dalej jest to samo...
Cały dzień z tym walczę i dalej jestem w kropce.

0

okej, rozwiązane...

Trzeba było wrzucić connectionstringa do app.config również w projekcie webservica, a byłem przekonany, że skorzysta ze stringa z DataAccessLayer...
co więcej byłem przekonany, że dużo wcześniej próbowałem już wrzucić tego stringa do webservica...

ech życie :) Dzięki anyway dark_astray!

1 użytkowników online, w tym zalogowanych: 0, gości: 1