Pracę z WCF Ria Services dobrze jest rozpocząć od stron MSDN na których znajdziemy wyczerpujące informacje w tym zakresie.
W pierwszej kolejności zainteresował mnie rozdział „Authentication, Roles, and Profiles”. Rozdział „Walkthrough: Using Authentication Service with Silverlight Business Application” zapowiadał się zachęcająco, jednak wykonując kolejne kroki można napotkać na kilka niespodzianek…
Tworzymy w Visual Studio 2010 nowy projekt używając template Silverlight Business Application. Automatycznie tworzą się dwa projekty, jeden z nich jest klientem a drugi projekt z rozszerzeniem .Web serwerem. Uruchamiamy aplikację ASP.NET Configuration, która umożliwia nam konfigurację z poziomu Visual Studio użytkowników i ról dla naszej aplikacji. Niestety już na tym etapie nie można uruchomić konfiguratora. Otrzymuje informację o braku dostępu do serwera sql.
Sprawdzamy 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>
<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" />
<roleManager enabled="true"/>
<authentication mode="Forms">
<forms name=".BusinessApplication1_ASPXAUTH" />
</authentication>
<profile>
<properties>
<add name="FriendlyName"/>
</properties>
</profile>
</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" />
</system.serviceModel>
</configuration>Niestety brak sekcji connectionString, która zawiera dane do połączenia z serverem sql. Brak również wpisu sqlMembershipProvider. Idąc najprostrzą drogą otwieramy nową instancję Visual Studio 2010 i tworzymy nowy projekt ASP.NET Web Site, który generuje nam odpowiedni template. Dla pewności z poziomu tego projektu uruchamiamy ASP.NET Configuration w celu weryfikacji web.config. W tym przypadku nie powinniśmy napotkać na trudności. Ustawienia domyślne dla ASP.NET Web Site powinny być wystarczające pod warunkiem, że wraz z Visual Studio zainstalowaliśmy Sql Server 2008 Express Edition.
Domyślnie baza Membership Privider jest tworzona w App_Data i podpinana do instacji sql w formie pliku .mdf. Jeżeli mamy nie zależną instancję Sql Server 2008 lub 2005 to musi odpowiednio zmodyfikować web.config w sekcji connectionString. W rzeczywistości w zaawansowanych aplikacjach tworzymy bazę Membership Provider na serwerze sql. W tym celu korzystamy z narzędzia aspnet_regsql.exe, które znajduje się C:\WINDOWS\Microsoft.NET\Framework\v2.0…..
Jeżeli testowa strona asp.net działa prawidłowo i możemy korzystać z logowania i rejestracji, z powodzeniem przenosimy parametry web.config do poprzedniego projektu Silverlight Business Application.
Wprowadzamy następujące elementy do Web.config
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider"
connectionStringName="ConnectionString"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="SqlRoleProvider">
<providers>
<remove name="SqlRoleProvider" />
<add name="SqlRoleProvider" type="System.Web.Security.SqlRoleProvider"
applicationName="/" connectionStringName="ConnectionString"/>
</providers>
</roleManager>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider"
connectionStringName="ConnectionString" applicationName="/"/>
</providers>
<properties>
<add name="FriendlyName" />
</properties>
</profile>
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=.;Initial Catalog=aspnetdb;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>


Brak komentarzy:
Prześlij komentarz