Siema
Parę długich dni próbuję już rozwiązać pewien problem. Chcę na IISie odpalić serwis WCFowy, ale nijak mi nie idzie.
Najpierw parę ogólnych informacji:
- Windows Vista Home Premium
- IIS 7.0 (domyślnie w viście)
Dodam na początku, że serwis WCFa jest raczej ok, bo na development serwerze działa ok.
Do konkretów. Uruchomiwszy Menadżera Internetowych Usług Informacyjnych dodałem nową pulę aplikacji, nazwawszy ją sobie DataServer, ustawiwszy jej architekturę .NETa na 2.0.50727, zarządzany tryb potokowy na Zintegrowany. Pula aplikacji uruchomiona.
Do witryn dodałem sobie nową witrynę o nazwie DataServer. Ścieżka fizyczna wskazuje na folder D:\DataServer, w którym to folderze znajduje się output z kompilacji DataServera (czyli mojego projektu WCF, w skrócie: dwie dllki, jedna wcfowa, druga odpowiadająca za połączenie z bazą danych przez LINQ2SQL), a także plik DataServer.svc i Web.config, oba wzięte z projektu. Witryna należy do puli DataServer, jest powiązana z portem 8000 (czyli wołam ją przez http://localhost:8000/DataServer.svc
Wydaje mi się, że o niczym nie zapomniałem.
Wchodzę więc w przeglądarkę, wpisuję odpowiedni adres (podany wyżej), a w zamian otrzymuję komunikat:
Błąd serwera w aplikacji '/'.
Nie znaleziono typu „DataServer.DataServer” udostępnionego jako wartość atrybutu Service w dyrektywie ServiceHost.
Opis: Podczas wykonywania bieżącego żądania sieci Web wystąpił nieobsługiwany wyjątek. Aby uzyskać dodatkowe informacje o błędzie i miejscu jego występowania w kodzie, przejrzyj ślad stosu.
Szczegły wyjątku: System.InvalidOperationException: Nie znaleziono typu „DataServer.DataServer” udostępnionego jako wartość atrybutu Service w dyrektywie ServiceHost.
Błąd źrdła:
Podczas wykonywania bieżącego żądania sieci Web został wygenerowany nieobsługiwany wyjątek. Informacje dotyczące pochodzenia i lokalizacji wyjątku można zidentyfikować przy użyciu poniższego śladu stosu wyjątku.
Ślad stosu:
[InvalidOperationException: Nie znaleziono typu „DataServer.DataServer” udostępnionego jako wartość atrybutu Service w dyrektywie ServiceHost.]
System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +4077562
System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +11666348
System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +42
System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +479
[ServiceActivationException: Nie można aktywować usługi „/DataServer.svc” z powodu wystąpienia wyjątku podczas kompilacji. Komunikat wyjątku: Nie znaleziono typu „DataServer.DataServer” udostępnionego jako wartość atrybutu Service w dyrektywie ServiceHost..]
System.ServiceModel.AsyncResult.End(IAsyncResult result) +11536522
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +194
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +176
System.ServiceModel.Activation.HttpHandler.ProcessRequest(HttpContext context) +23
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
Informacje o wersji: Wersja Microsoft .NET Framework:2.0.50727.4200; Wersja ASP.NET:2.0.50727.4016
Widziałem po necie rozwiązania typu: stwórz nową solucję, dodaj w niej te projekty i zbuduj, bedzie działało. Niestety, nie u mnie.
Wpis w pliku .svc wygląda tak:
<%@ ServiceHost Language="C#" Debug="false" Service="DataServer.DataServer" CodeBehind="DataServer.svc.cs" %>
Przy okazji napiszę też o problemie z uruchomieniem jakieś strony aspx. Mam stronkę wygenerowaną przez VS do hostowania app Silverlightowej. Została dodana witryna do IISa, na port 9000. Odpalenie pliku html przez przeglądarkę działa ok, silverlightowa app się wyświetla. Ale chciałbym odpalić stronę .aspx, a tu jest gorzej.
Błąd serwera w aplikacji '/'.
Błąd kompilacji
Opis: Wystąpił błąd w czasie kompilowania zasobu wymaganego do obsłużenia tego żądania. Przejrzyj poniższe szczegłowe informacje o błędzie i zmodyfikuj odpowiednio kod źrdłowy.
Komunikat o błędzie kompilatora: CS0016: Nie można zapisać danych w pliku wyjściowym „c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\8716a455\79ae8f70\App_Web_changesystem.aspx.cdcab7d2.t69pyjyx.dll” — „Odmowa dostępu. ”.
naczytałem się o problemach w dostępie, zmieniałem ścieżki do zmiennych środowiskowych TEMP i TMP na c:/temp, gdzie wszyscy userzy mieli wszystkie prawa, praw dla folderu z errora nie umiem zmienić dla usera IIS_IUSR, nie widzę nigdzie użytkownika "Network Service", domyślam się że takiego być nie powinno, a jakiś inny user pełni jego rolę, jak sprawdzić który albo coś? Jak naprawić błąd i odpalić?
Z IISa jestem w miarę zielony, więc nie krzyczcie jak głupoty opowiadam ;)
Pzdr
Pako