Skip to main content

Posts

Showing posts with the label IIS

Could not load file or assembly or one of its dependencies. An attempt was made to load a program with an incorrect format wcf on iis.

Cat de cunoscuta vi se pare eroarea aceasta? Prima parte din eroare mi s-a parut foarte cunoscuta in prima faza dar totusi e usor enigmatica. Problema cea mai mare la acest tip de eroare este ca nu ne spune exact care este cauza. Mai jos o sa gasit trei cazuri comune cand aceasta eroare apare Assembly-ul nu poate fi gasit in locatia data. In funcție de setarile proiectului unu sau mai multe assembly-uri nu se gasesc in locațiile specificate. Unu din assembly-uri este compilat pentru o alta arhitectura de procesor. De exemplu incercam sa rulam 3 proiecte care se refera intre ele. Unul din ele este compilat pentru x86, iar restul proiectelor sunt compilate pe o arhitectura de tip x64. Sunt compilate pe versiuni diferite de .NET. Un assembly este compilat pentru .NET 2.0, iar altul pentru .NET 4.0. Desii toate cazurile au soluții simple, din cauza ca rulam aplicatia din IIS, o parte din erori sunt vagi si apar doar la runtime. De exemplu daca avem un assembly care contine un serviciu WCF ...

Auto-start la servicii WCF hostate pe IIS

Sunt cazuri când avem servicii WCF pe IIS care necesita un timp lung pentru iniţializare. Din aceasta cauza primul apel a unui serviciu poate sa dureze o veşnicie. La încărcarea aplicaţiei, IIS ne ajuta destul de mult: iniţializează AppDomain, compilează dacă este nevoie codul( în principiu pregăteşte aplicaţia). Aproape totul este pregătit, mai puţin iniţializarea serviciilor, care este lăsata în seama noastră. Pentru aceasta problema exista mai multe soluţii: La iniţializarea aplicaţiei se pot încarcă resursele necesare serviciului static sau într-un IoC. Apelul "virtual" a tuturor serviciilor, în momentul în care serverul porneşte. Prin aceasta metoda toate resursele folosite de către servicii o sa fie deja încărcare. Implementarea unui mecanism de auto-start la servicii. O sa descriu mai amănunţit ultima soluţie propusa. .NET împreuna cu IIS 7.5 ne pune la îndemâna un mecanism destul de simplu prin intermediul căruia putem sa iniţializam automat un servic...