Pokazywanie postów oznaczonych etykietą problemy i błedy. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą problemy i błedy. Pokaż wszystkie posty

poniedziałek, 9 czerwca 2008

Problem z Web Services w Silverlight 2.0 Beta 2

Kolejny dzień i kolejne problemy z nową wersją Silverlighta. Tym razem 'web serwisy'. Ponieważ troszkę się naszukałem, to postanowiłem podzielić się z Wami znalezionym rozwiązaniem.

Problem

Problem pojawia się, gdy chcemy użyć web serwisa (WCF, ASMX, etc.) w projekcie z nową wersją Silverlighta 2 Beta 2.0, a objawia się takim oto komunikatem:

Error "Object reference not set to an instance of an object"

Z tego, co ludzie piszą, nie u każdego się pojawił, więc nie musi akurat Was to dotyczyć.

Powód

Powodem dlaczego się tak dzieje jest plik Microsoft.VisualStudio.ServicesProxy.dll, który podczas instalacji nie zostaje nadpisany przez instalkę "Microsoft Silverlight Tools Beta 2 for Visual Studio 2008" (link). W efekcie, Visual Studio 2008 używa własnej, starej i nienadpisanej wersji pliku.

Rozwiązanie

Rozwiązaniem jest ręczne przeniesienie pliku Microsoft.VisualStudio.ServicesProxy.dll z katalogu (Wasza ścieżka do Visual Studio) ..\Microsoft Visual Studio 9.0\Common7\IDE\do jakiegoś dowolnego innego katalogu (nie kasować, tylko przenieść – bezpieczniej jest = backup).

Następnie w Control Panel - > Programs and Features znajdujemy wpis "Microsoft Silverlight Tools Beta 2 for Visual Studio 2008" i sprawdzamy rozmiar. Jeśli zamiast 1.17MB lub 1.18MB widzimy 1.14MB, no to pewno mamy do czynienia z w/w problemem i musimy odinstalować Microsoft Silverlight Tools Beta 2 for Visual Studio 2008" i zainstalować je ponownie.

Tym razem, gdy w Visual Studio 2008 nie będzie już pliku Microsoft.VisualStudio.ServicesProxy.dll, instalacja wgra swój własny, prawidłowy plik.


Resources

  • Tim Anderson's blog link
  • Forum silverlight.net link


Pozdrawiam,
Jacek Ciereszko

Problem z instalacją „Microsoft Silverlight Tools Beta 2 for Visual Studio 2008”

Wraz z nową wersją Silverlight 2.0 Beta 2, pojawiły się nowe problemy. Oprócz wielu zmian (link), możemy natknąć się także na problemy z instalacją toolsów do Visual Studio 2008.

Jeśli podczas instalacji, mimo że usunęliście wszystkie stare wersje programów, otrzymujecie błąd, sprawdźcie czy otrzymujecie taki ekran:

oraz czy plik z logami (log file) zawiera taki wpis (lub podobny :P)?

(IronSpigot::ExeInstallerBase::PerformAction) PerformOperation on exe returned exit code 1603 (translates to HRESULT = 0x80070643)

Jeśli Twoja odpowiedź brzmi TAK! To znaczy, że należy usunąć zainstalowany update dla Visual Studio 2008.

Zanim przystąpicie do odinstalowania, upewnijcie się że odinstalowaliście poprzednie wersje programów: Blend, Deep Zoom Composer, poprzednie toolsy do Visual Studio oraz Silverlight Beta 1 runtime oraz macie przy sobie płytki instalacyjne Visual Studio 2008.

Aby usunąć dodatek, należy przejść do listy updatetów (Windows Vista) Start -> Control Panel -> Programs and Features i po lewej stronie wybrać "View Installed Updates".

Z listy która się wyświetli, wybieramy pozycję "Update for Microsoft Visual Studio 2008… (KB949325)". Czyli tą, oznaczoną numerem KB949325.

Po udanym odinstalowaniu, problem nie powinien się powtórzyć i wreszcie będziecie mogli przystąpić do przerabiania swoich aplikacji z wersji Beta 1 do wersji Beta 2. I kiedy już nie będziecie wiedzieć czemu Wasz kod się kompiluje, a mimo to nie działa i wyrzuca błędy podczas uruchamiania, zajrzyjcie na stronę What's Different in Beta 2.

Resources


Pozdrawiam,
Jacek Ciereszko

niedziela, 1 czerwca 2008

„Could not load file or assembly App_Web” – problem rozwiązany. Part 3

Niedawno pisałem o problemie związanym z komunikacją pomiędzy aplikacją Silverlight, a WCF Service umieszczonym w aplikacji ASP.NET (link). Ponieważ nie dawało mi to spokoju oraz problem ten występował także w aplikacji konkursowej (patrz Win The Web), to postanowiłem znaleźć jego przyczynę.

Okazało się, że przyczyną całego zamieszania, było to, że serwis WCF jest hostowany razem z aplikacją ASP.NET w tej samej domenie. W efekcie, z jakiś powodów, w pewnym momencie WCF Service przestaje działać i nawet restart IISa nie pomaga.

Lokalnie (tak jak pisałem poprzednio) można czyścić katalog C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\, natomiast na serwerze IIS najszybciej jest wgrać ponownie katalog bin z nowo przekompilowanej wersji projektu.

Ale, że lepiej zapobiegać niż leczyć, to należy:

  1. W pliku konfiguracyjnym ASP.NET (web.config), w elemencie <System.serviceModel>, dodać wpis <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>.
  2. W WCF Service, a dokładniej w kodzie usługi dodajemy

    using System.ServiceModel.Activation;


    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

    public class KlasaService : IKlasaService

    { .. }

Zmiany te spowodują, że WCF Service będzie zachowywać się jak zwykły ASMX, czyli straci swoje specjalne właściwości, ale za to będzie współdziałał bezawaryjnie z aplikacją ASP.NET. Na temat powyższych ustawień (Allowed/Required) nie będę się rozpisywał w tym poście i zapraszam po więcej na stronę MSDNa (link).

Resources

  • Webcast Tim Heuer-a na temat połączeń Silverlighta z WCFem (link) – POLECAM!!! (szkoda, że nie ukazał się z tydzień wcześniej, zaoszczędziło by mi to bardzo dużo czasu ;) )
  • Wpis Kemal Tolga Koseoglu (link) - Polecam!
  • Dokładny opis całego problemu (link) - Polecam!
  • Obszerny artykuł na w/w temat tylko w połączeniu z ASMXem (link)
  • Dyskusja na forum Silverlight.net na w/w temat(link)


Pozdrawiam,
Jacek Ciereszko

poniedziałek, 26 maja 2008

Problemy i częste błędy podczas pracy z Silverlight-em . Part 2

Kolejnym błędem, jaki może się przydarzyć podczas pracy z Silerelightem jest cachowanie aplikacji, a dokładnie plików xap, w pamięci przeglądarki. Gdy zmiany w kodzie nie są widoczne w uruchamianej aplikacji, warto sprawdzić czy widzimy jej najnowszą wersję.

Problem ten nie jest widoczny, gdy rozwijamy tylko aplikację Silverlight, ale jeśli zagnieżdżamy ją w stronie ASP.NET, która jest w tym samym "Solution", to bardzo często plik xap nie jest podmieniany na nowy, a co za tym idzie wyświetlamy starą i nieaktualną wersję aplikacji Silverlight-a.

Rozwiązanie:

  1. Przeglądarka IE -> Tools -> Internet Options -> General -> Browsing History -> Delete -> Temporary Internet Files (ja tu wybieram opcję "Delete All", tak żeby mieć pewność)
  2. Drugim, może nie do końca rozwiązaniem, jest wyświetlanie numeru build-a aplikacji. Wystarczy wrzucić drobną labelkę, a w niej numer wersji. Np.:

    <TextBlock x:Name="label" Width="400" Height="50"

    TextWrapping="Wrap" />

Assembly assembly = Assembly.GetExecutingAssembly();

label.Text = assembly.FullName;


W pliku AssemblyInfo.cs należy zmienić z 1.0.0.0 na 1.0.*

[assembly: AssemblyVersion("1.0.*")]

[assembly: AssemblyFileVersion("1.0.*")]


Straciłem kilka godzin, zanim przypadkiem wpadłem na to, że pracuje na niezaktualizowanej wersji aplikacji Silverlight-a. Mam nadzieje, że Wy już nie będziecie musieli się z tym męczyć.


Pozdrawiam,
Jacek Ciereszko

Problemy i częste błędy podczas pracy z Silverlight-em . Part 1

Jednym z najbardziej dokuczliwych błędów jakie możemy otrzymać jest błąd ładowania plików lub assembly. Pojawia się on podczas pracy z aplikacją Silverlight, która łączy się z WCF Services w aplikacji ASP.NET. Wygląda to mniej więcej tak:

Fix for ASP.NET "Could not load file or assembly App_Web..." Error..

Rozwiązanie:

Rozwiązaniem które znam, jest czyszczenie katalogu C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\

Po usunięciu wszystkich plików dotyczących projektu, błąd znika na jakiś czas i aplikacja działa poprawnie. Aby móc wyczyścić katalog, należy zamknąć projekt w Visual Studio.

Nie wiem czy jest to jedyne i poprawne rozwiązanie tego problemu ale na pewno działa :)

Resources

edit:

Znalazłem przyczynę i rozwiązanie powyższego problemu!! (link)


Pozdrawiam,
Jacek Ciereszko