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

Brak komentarzy: