WCF RIA Service hosten im IIS | 403 Access Forbidden
-
Hallo,
kann mir irgendjemand sagen wie man einen WCF RIA Service und den IIS 6.0 richtig konfiguriert oder wo ich das nachlesen kann?
Ich habe momentan folgende web.config:
<?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="system.serviceModel"> <section name="domainServices" type="System.ServiceModel.DomainServices.Hosting.DomainServicesSection, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" allowDefinition="MachineToApplication" requirePermission="false" /> </sectionGroup> </configSections> <connectionStrings configSource="Configuration\MyPage.config.xml"/> <system.web> <httpModules> <add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </httpModules> <compilation debug="true" targetFramework="4.0" /> <membership defaultProvider="AspNetSqlProvider"> <providers> <clear/> <add type="System.Web.Security.SqlMembershipProvider" name="AspNetSqlProvider" connectionStringName="ASP.NET"/> </providers> </membership> <roleManager enabled="true" defaultProvider="SqlRoleProvider"> <providers> <clear /> <add name="SqlRoleProvider" connectionStringName="ASP.NET" type="System.Web.Security.SqlRoleProvider" /> </providers> </roleManager> <profile defaultProvider="SqlProfileProvider"> <providers> <clear/> <add name="SqlProfileProvider" connectionStringName="ASP.NET" type="System.Web.Profile.SqlProfileProvider"/> </providers> <properties> <add name="FriendlyName"/> <add name="PictureURL"/> </properties> </profile> <authentication mode="Forms"> <forms name=".MyPage_ASPXAUTH"/> </authentication> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules runAllManagedModulesForAllRequests="true"> <add name="DomainServiceModule" preCondition="managedHandler" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </modules> </system.webServer> <system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"> <baseAddressPrefixFilters> <add prefix="http://localhost:8080/MyPage/"/> </baseAddressPrefixFilters> </serviceHostingEnvironment> <services> <service name="AuthenticationService" behaviorConfiguration="RIAServiceBehavior"> <endpoint address="" binding="wsHttpBinding" contract="AuthenticationService"/> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> <service name="UserRegistrationService" behaviorConfiguration="RIAServiceBehavior"> <endpoint address="" binding="wsHttpBinding" contract="UserRegistrationService"/> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <behaviors> <serviceBehaviors> <behavior name="RIAServiceBehavior"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
Wenn meine Seite eine Funktion des UserRegistrationService aufruft, dann bekomme ich immer folgende Exception im Browser:
Load operation failed for query 'GetUsers'. Der Remoteserver hat eine unerwartete Antwort zurückgeben: (403) Access Forbidden.
WCF Storm sagt folgendes beim direkten zugriff auf http://localhost:8080/MyPage/UserRegistrationService.svc
System.Net.WebException: Fehler bei der Anforderung mit HTTP-Status 403: Access Forbidden. --- Ende der internen Ausnahmestapelüberwachung --- bei System.Web.Services.Discovery.DiscoveryClientProtocol.Download(String& url, String& contentType) bei System.Web.Services.Discovery.DiscoveryClientProtocol.DiscoverAny(String url) bei WcfStorm.DynamicProxy.ServiceClientProxyFactory.?(Option`1 ?) bei WcfStorm.DynamicProxy.ServiceClientProxyFactory.DiscoverEndpoint(Option`1 cfgOption) bei WcfStorm.Model.WcfServiceModel.?(ServiceClientProxyFactory ?) bei WcfStorm.Lib.Common.BgWorker`2.OnDoWork(DoWorkEventArgs e) Client proxy code is empty!
Den Fiddler Report schenke ich mir, es ist klar was Sache ist.
Ich habe das Projekt über das Visual Studio > Project > Publish > File System > Local IIS veröffentlicht.
Ich habe die defaults beibehalten. Der Haken bei "Enable anonymous access" ist drin. Als Konto ist IUSR_MEIN_RECHNERNAME (Internetgastkonto) gewählt. Im IIS unter Standardwebsite > MyPage habe ich unter Permissions extra dieses Konto hinzugefügt und ihm Lesen / Ausführen Rechte gegeben.Ich bin so langsam am verzweifeln. Kann mir irgendjemand verraten was ich falsch mache?
-
Du könntest testweise mal im System.Web Element die Elemente <membership> <roleManager> und <profile> auskommentieren und den Authentication mode auf Windows stellen.
-
Danke für deine Antwort. Leider bringt das aber auch nichts. Selber fehler wie vorher. Er kann einfach nicht auf den Service zugreifen, weshalb ich irgendwie vermute, diesen falsch konfiguriet zu haben.