Uygulama Hizmetleri Kullanan Bir Web Sitesi Yapılandırma (VB)Configuring a Website that Uses Application Services (VB)

Scott Mitchell tarafındanby Scott Mitchell

Kodu indirin veya PDF 'yi indirinDownload Code or Download PDF

ASP.NET sürüm 2,0, .NET Framework bir parçası olan ve Web uygulamanıza zengin işlevsellik eklemek için kullanabileceğiniz bir yapı blok Hizmetleri paketi olarak hizmet veren bir dizi uygulama hizmeti sunmuştur.ASP.NET version 2.0 introduced a series of application services, which are part of the .NET Framework and serve as a suite of building block services that you can use to add rich functionality to your web application. Bu öğreticide, üretim ortamında uygulama hizmetlerini kullanmak için bir Web sitesinin nasıl yapılandırılacağı ve üretim ortamındaki Kullanıcı hesaplarını ve rolleri yönetme ile ilgili yaygın sorunları ele alınmaktadır.This tutorial explores how to configure a website in the production environment to use application services and addresses common issues with managing user accounts and roles on the production environment.

GirişIntroduction

ASP.NET sürüm 2,0, .NET Framework bir parçası olan ve Web uygulamanıza zengin işlevsellik eklemek için kullanabileceğiniz bir yapı blok Hizmetleri paketi olarak hizmet veren bir dizi uygulama hizmetisunmuştur.ASP.NET version 2.0 introduced a series of application services, which are part of the .NET Framework and serve as a suite of building block services that you can use to add rich functionality to your web application. Uygulama Hizmetleri şunları içerir:The application services include:

  • Üyelik -Kullanıcı hesapları oluşturmak ve yönetmek IÇIN bir API.Membership - an API for creating and managing user accounts.
  • Roller -kullanıcıları gruplar halinde kategorilere ayırmak IÇIN bir API.Roles - an API for categorizing users into groups.
  • Profile -özel, kullanıcıya özgü içerik depolamaya YÖNELIK bir API.Profile - an API for storing custom, user-specific content.
  • Site haritası -daha sonra menüler ve içerik haritaları gibi gezinme denetimleriyle görüntülenebilecek bir hiyerarşi biçiminde bir site s mantıksal yapısını tanımlamaya YÖNELIK bir API.Site Map - an API for defining a site s logical structure in the form of a hierarchy, which can then be displayed via navigation controls, such as menus and breadcrumbs.
  • Kişiselleştirme -genellikle Websiteleriyle kullanılan özelleştirme TERCIHLERINI korumak için bir API.Personalization - an API for maintaining customization preferences, most often used with WebParts.
  • Sistem durumu izleme -çalışan bir Web uygulaması için performansı, güvenliği, hataları ve diğer sistem durumu ölçümlerini izlemeye YÖNELIK bir API.Health Monitoring - an API for monitoring performance, security, errors, and other system health metrics for a running web application.

Uygulama Hizmetleri API 'Leri belirli bir uygulamaya bağlı değildir.The application services APIs are not tied to a specific implementation. Bunun yerine, uygulama hizmetlerinin belirli bir sağlayıcıyıkullanmasını ve bu sağlayıcının belirli bir teknolojiyi kullanarak hizmeti uyguladığını söyleyebilirsiniz.Instead, you instruct the application services to use a particular provider, and that provider implements the service using a particular technology. Bir Web barındırma şirketinde barındırılan Internet tabanlı Web uygulamaları için en yaygın olarak kullanılan sağlayıcılar, SQL Server veritabanı uygulaması kullanan sağlayıcılardır.The most commonly used providers for Internet-based web applications hosted at a web hosting company are those providers that use a SQL Server database implementation. Örneğin SqlMembershipProvider, Kullanıcı hesabı bilgilerini bir Microsoft SQL Server veritabanında depolayan üyelik API 'SI için bir sağlayıcıdır.For example, the SqlMembershipProvider is a provider for the Membership API that stores user account information in a Microsoft SQL Server database.

Uygulama hizmetleri ve SQL Server sağlayıcılarının kullanılması, uygulamayı dağıtma sırasında bazı güçlükleri ekler.Using the application services and SQL Server providers adds some challenges when deploying the application. Başlangıçlara yönelik olarak, uygulama Hizmetleri veritabanı nesnelerinin hem geliştirme hem de üretim veritabanlarında doğru şekilde oluşturulması ve uygun şekilde başlatılmış olması gerekir.For starters, the application services database objects must be properly created on both the development and production databases and appropriately initialized. Ayrıca, yapılması gereken önemli yapılandırma ayarları vardır.There are also important configuration settings that need to be made.

Note

Uygulama Hizmetleri API 'Leri, çalışma zamanında API s uygulama ayrıntılarının sağlanmasını sağlayan bir tasarım modeli olan sağlayıcı modelikullanılarak tasarlanmıştır.The application services APIs were designed using the provider model, a design pattern that allows for an API s implementation details to be provided at runtime. .NET Framework, bir SQL Server veritabanı uygulaması kullanan üyelik ve rol API 'Leri için sağlayıcılar olan SqlMembershipProvider ve SqlRoleProvidergibi kullanılabilecek bir dizi uygulama hizmeti sağlayıcısıyla birlikte gelir.The .NET Framework ships with a number of application service providers that can be used, such as the SqlMembershipProvider and SqlRoleProvider, which are providers for the Membership and Roles APIs that use a SQL Server database implementation. Ayrıca özel bir sağlayıcı oluşturup eklenti ekleyebilirsiniz.You can also create and plug-in a custom provider. Aslında, Book Incelemeleri Web uygulaması, site haritası API 'SI (ReviewSiteMapProvider) için bir özel sağlayıcı içerir. Bu, site haritasını, Genres ve veritabanındaki Books tablolardaki verileri oluşturur.In fact, the Book Reviews web application already contains a custom provider for the Site Map API (ReviewSiteMapProvider), which constructs the site map from the data in the Genres and Books tables in the database.

Bu öğreticide, üyelik ve rol API 'Lerini kullanmak için kitap Incelemelerinin Web uygulamasını nasıl genişlettiğiyle ilgili bir bakış açıklanır.This tutorial starts with a look at how I extended the Book Reviews web application to use the Membership and Roles APIs. Daha sonra, SQL Server veritabanı uygulamasıyla uygulama hizmetleri 'ni kullanan bir Web uygulamasını dağıtmaya ve üretim ortamındaki Kullanıcı hesaplarını ve rolleri yönetme ile ilgili yaygın sorunları gidermeye geçer.It then walks through deploying a web application that uses application services with a SQL Server database implementation, and concludes by addressing common issues with managing user accounts and roles on the production environment.

Kitap Inceleme uygulamasındaki güncelleştirmelerUpdates to the Book Reviews Application

Son iki öğreticilerde, kitap Incelemelerinin Web uygulaması statik bir Web sitesinden dinamik, veri odaklı bir Web uygulamasına, tarzları ve incelemeleri yönetmeye yönelik bir dizi yönetim sayfası ile tamamlanan bir şekilde güncelleştirildi.Over the past couple tutorials the Book Reviews web application was updated from a static website to a dynamic, data-driven web application complete with a set of administration pages for managing genres and reviews. Ancak, bu yönetim bölümü şu anda korunmuyor. yönetim sayfası URL 'sini bilen (veya tahmin eden) herhangi bir Kullanıcı, sitemizdeki incelemeleri oluşturma, düzenleme veya silme işlemi yapabilir.However, this administration section is currently not protected - any user who knows (or guesses) the administration page URL can waltz in and create, edit, or delete reviews on our site. Bir Web sitesinin belirli kısımlarını korumanın yaygın bir yolu, Kullanıcı hesaplarını uygulamak ve ardından belirli kullanıcılara veya rollere erişimi kısıtlamak için URL yetkilendirme kurallarını kullanmaktır.A common way to protect certain portions of a website is to implement user accounts and then use URL authorization rules to restrict access to certain users or roles. Bu öğreticiyle indirilebilir olan kitap Incelemeleri Web uygulaması, Kullanıcı hesaplarını ve rolleri destekler.The Book Reviews web application available for download with this tutorial supports user accounts and roles. Yönetici adlı tek bir role sahiptir ve yalnızca bu roldeki kullanıcılar yönetim sayfalarına erişebilir.It has a single role defined named Admin and only users in this role can access the administration pages.

Note

Kitap Incelemelerinin Web uygulamasında üç Kullanıcı hesabı oluşturduğdum: Scott, Jisun ve gamze.I ve created three user accounts in the Book Reviews web application: Scott, Jisun, and Alice. Üç kullanıcının tümü aynı parolaya sahiptir: parola!All three users have the same password: password! Scott ve Jisun yönetici rolünde, Çiğdem değil.Scott and Jisun are in the Admin role, Alice is not. Yönetim dışı site sayfalarına hala anonim kullanıcılar erişebilir.The site s non-administration pages are still accessible to anonymous users. Diğer bir deyişle, yönetmek istemediğiniz sürece siteyi ziyaret etmek için oturum açmanız gerekmez, bu durumda yönetici rolünde bir kullanıcı olarak oturum açmanız gerekir.That is, you do not need to sign in to visit the site, unless you want to administer it, in which case you must sign in as a user in the Admin role.

Kitap Inceleme uygulaması ana sayfası, kimliği doğrulanmış ve anonim kullanıcılar için farklı bir kullanıcı arabirimi içerecek şekilde güncelleştirilmiştir.The Book Reviews application s master page has been updated to include a different user interface for authenticated and anonymous users. Anonim bir Kullanıcı, sağ üst köşedeki bir oturum açma bağlantısı gördüğü siteyi ziyaret ederse.If an anonymous user visits the site she sees a Login link in the upper right corner. Kimliği doğrulanmış bir Kullanıcı "hoş geldiniz geri, Kullanıcı adı!" iletisini görürAn authenticated user sees the message, "Welcome back, username!" ve oturumu kapatmak için bir bağlantı. Ayrıca, bir ziyaretçi kimlik doğrulaması için Kullanıcı arabirimi ve mantığını sağlayan bir oturum açma Web denetimi içeren bir oturum açma sayfası (~/Login.aspx) vardır.and a link to log out. There s also a login page (~/Login.aspx), which contains a Login Web control that provides the user interface and logic for authenticating a visitor. Yalnızca Yöneticiler yeni hesaplar oluşturabilir.Only administrators can create new accounts. (~/Admin klasöründe Kullanıcı hesapları oluşturmak ve yönetmek için sayfalar vardır.)(There are pages for creating and managing user accounts in the ~/Admin folder.)

Üyelik ve rol API 'Lerini yapılandırmaConfiguring the Membership and Roles APIs

Kitap Incelemeleri Web uygulaması, Kullanıcı hesaplarını desteklemek ve bu kullanıcıları rollere (yani, yönetici rolü) gruplamak için üyelik ve rol API 'Lerini kullanır.The Book Reviews web application uses the Membership and Roles APIs to support user accounts and to group those users into roles (namely, the Admin role). SqlMembershipProvider ve SqlRoleProvider sağlayıcı sınıfları, hesap ve rol bilgilerini bir SQL Server veritabanında depolamak istediğimiz için kullanılır.The SqlMembershipProvider and SqlRoleProvider provider classes are used because we want to store account and role information in a SQL Server database.

Note

Bu öğreticide, üyelik ve rol API 'Lerini destekleyecek bir Web uygulamasını yapılandırma konusunda ayrıntılı bir inceleme olması amaçlanmamıştır.This tutorial is not intended to be a detailed examination at configuring a web application to support the Membership and Roles APIs. Bu API 'Lere tam bakış ve bu Web sitesini kullanmak üzere yapılandırmak için gerçekleştirmeniz gereken adımlar için lütfen Web sitesi güvenlik öğreticilerimiokuyun.For a thorough look at these APIs and the steps you need to take to configure a website to use them, please read my Website Security Tutorials.

Uygulama hizmetlerini bir SQL Server veritabanıyla kullanmak için, önce bu sağlayıcılar tarafından kullanılan veritabanı nesnelerini Kullanıcı hesabı ve rol bilgilerinin depolanmasını istediğiniz veritabanına eklemeniz gerekir.To use the application services with a SQL Server database you must first add the database objects used by these providers to the database where you want the user account and role information stored. Bu önkoşul veritabanı nesneleri çeşitli tablolar, görünümler ve saklı yordamlar içerir.These requisite database objects include a variety of tables, views, and stored procedures. Aksi belirtilmedikçe, SqlMembershipProvider ve SqlRoleProvider sağlayıcı sınıfları uygulama s App_Data klasöründe bulunan ASPNETDB adlı bir SQL Server Express sürümü veritabanı kullanır; Böyle bir veritabanı yoksa, çalışma zamanında bu sağlayıcılar tarafından gerekli veritabanı nesneleriyle otomatik olarak oluşturulur.Unless specified otherwise, the SqlMembershipProvider and SqlRoleProvider provider classes use a SQL Server Express Edition database named ASPNETDB located in the application s App_Data folder; if such a database does not exist, it is automatically created with the necessary database objects by these providers at runtime.

Uygulama Hizmetleri veritabanı nesnelerini Web sitesinin uygulamaya özgü verilerin depolandığı veritabanında oluşturmak için bu mümkün ve genellikle idealdir.It is possible, and usually ideal, to create the application services database objects in the same database where the website s application-specific data is stored. .NET Framework, veritabanı nesnelerini belirtilen bir veritabanına yükleyen aspnet_regsql.exe adlı bir araçla birlikte gönderilir.The .NET Framework ships with a tool named aspnet_regsql.exe that installs the database objects on a specified database. Bu aracı daha sonra bu nesneleri App_Data klasöründeki (geliştirme veritabanı) Reviews.mdf veritabanına eklemek için kullandınız.I have gone ahead and used this tool to add these objects to the Reviews.mdf database in the App_Data folder (the development database). Bu nesneleri üretim veritabanına eklerken Bu öğreticinin ilerleyen kısımlarında bu aracı nasıl kullanacağınızı inceleyeceğiz.We'll see how to use this tool later in this tutorial when we add these objects to the production database.

Uygulama Hizmetleri veritabanı nesnelerini ASPNETDB dışında bir veritabanına eklerseniz, SqlMembershipProvider ve SqlRoleProvider sağlayıcı sınıfları yapılandırmalarının uygun veritabanını kullanmaları için özelleştirmeniz gerekir.If you add the application services database objects to a database other than ASPNETDB you will need to customize the SqlMembershipProvider and SqlRoleProvider provider classes configurations so that they use the appropriate database. Üyelik sağlayıcısını özelleştirmek için Web.config``<system.web> bölümünde <üyelik> öğesi ekleyin. Rol sağlayıcısını yapılandırmak için <roleManager> öğesini kullanın.To customize the Membership provider add a <membership> element within the <system.web> section in Web.config; use the <roleManager> element to configure the Roles provider. Aşağıdaki kod parçacığı, uygulama Web.config Inceler ve üyelik ve roller API 'Leri için yapılandırma ayarlarını gösterir.The following snippet is taken from the Book Reviews application s Web.config and shows the configure settings for the Membership and Roles APIs. Her ikisinin de, sırasıyla SqlMembershipProvider ve SqlRoleProvider sağlayıcılarını kullanan yeni bir sağlayıcıyı ReviewMembership ve ReviewRole kaydedeceğini unutmayın.Note that both register a new provider - ReviewMembership and ReviewRole - that use the SqlMembershipProvider and SqlRoleProvider providers, respectively.

<configuration>
    <system.web>
        ...

        <membership defaultProvider="ReviewMembership">
            <providers>
                <clear />

                <add type="System.Web.Security.SqlMembershipProvider" 
                     name="ReviewMembership" 
                     connectionStringName="ReviewsConnectionString" 
                     applicationName="BookReviews" />
            </providers>
        </membership>

        <roleManager enabled="true" defaultProvider="ReviewRole">
            <providers>
                <clear />

                <add type="System.Web.Security.SqlRoleProvider" 
                     name="ReviewRole" 
                     connectionStringName="ReviewsConnectionString" 
                     applicationName="BookReviews" />
            </providers>
        </roleManager>

        ...
    </system.web>
</configuration>

Web.config File s <authentication> öğesi form tabanlı kimlik doğrulamasını destekleyecek şekilde yapılandırılmıştır.The Web.config file s <authentication> element has also been configured to support forms-based authentication.

<configuration>
    <system.web>
        ...

        <authentication mode="Forms" />

        ...
    </system.web>
</configuration>

Yönetim sayfalarına erişimi sınırlandırmaLimiting Access to the Administration Pages

ASP.NET, belirli bir dosya veya klasöre Kullanıcı veya rol tarafından URL yetkilendirmesi özelliği aracılığıyla erişim izni vermenizi ya da reddetmeyi kolaylaştırır.ASP.NET makes it easy to grant or deny access to a particular file or folder by user or by role via its URL authorization feature. ( IIS ile ASP.NET geliştirme sunucusu öğreticisi arasındaki temel farklılıklara ilişkin URL yetkilendirmesi kısaca ele ALıNMıŞTıR ve ııs Ile ASP.net GELIŞTIRME sunucusunun URL yetkilendirme kurallarını statik ve dinamik içerik için farklı şekilde nasıl uygulayacağınızı gösterdi.) Yönetici rolündeki kullanıcılar hariç ~/Admin klasörüne erişimi yasakladığımızda, URL yetkilendirme kurallarını bu klasöre eklememiz gerekir.(We briefly discussed URL authorization in the Core Differences Between IIS and the ASP.NET Development Server tutorial and showed how IIS and the ASP.NET Development Server apply URL authorization rules differently for static versus dynamic content.) Because we want to prohibit access to the ~/Admin folder except for those users in the Admin role, we need to add URL authorization rules to this folder. Özellikle, URL yetkilendirme kurallarının yönetici rolünde kullanıcılara izin vermemesi ve diğer tüm kullanıcıları reddetmesi gerekir.Specifically, the URL authorization rules need to allow users in the Admin role and deny all other users. Bu, ~/Admin klasörüne aşağıdaki içeriklerle bir Web.config dosyası eklenerek gerçekleştirilir:This is accomplished by adding a Web.config file to the ~/Admin folder with the following contents:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <authorization>
            <allow roles="Admin" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration>

ASP.NET s URL yetkilendirme özelliği hakkında daha fazla bilgi edinmek ve kullanıcıların ve rollerinin yetkilendirme kurallarını öğrenmek için nasıl kullanılacağı hakkında daha fazla bilgi için, Web sitemin güvenlik öğreticilerimin Kullanıcı tabanlı yetkilendirme ve rol tabanlı yetkilendirme öğreticilerini okuduğunuzdan emin olun.For more information on ASP.NET s URL authorization feature and how to use it to spell out authorization rules for users and for roles, be sure to read the User-Based Authorization and Role-Based Authorization tutorials from my Website Security Tutorials.

Uygulama Hizmetleri kullanan bir Web uygulamasını dağıtmaDeploying a Web Application That Uses Application Services

Uygulama hizmetleri ve bir veritabanında uygulama hizmetleri bilgilerini depolayan bir sağlayıcı kullanan bir Web sitesi dağıtıldığında, uygulama hizmetleri için gereken veritabanı nesnelerinin üretim veritabanında oluşturulması zorunludur.When deploying a website that uses application services and a provider that stores the application services information in a database, it is imperative that the database objects needed by the application services be created on the production database. Başlangıçta üretim veritabanı bu nesneleri içermez, bu nedenle uygulama ilk kez dağıtıldığında (veya uygulama hizmetleri eklendikten sonra ilk kez dağıtıldığında), bu önkoşul veritabanı nesnelerini almak için ek adımlar gerçekleştirmeniz gerekir üretim veritabanı.Initially the production database does not contain these objects, so when the application is first deployed (or when it is deployed for the first time after application services have been added), you must take extra steps to get these requisite database objects on the production database.

Geliştirme ortamında oluşturulan kullanıcı hesaplarını üretim ortamına çoğaltmak istiyorsanız, uygulama hizmetleri 'ni kullanan bir Web sitesi dağıtımında başka bir zorluk ortaya çıkabilir.Another challenge can arise when deploying a website that uses application services if you intend to replicate the user accounts created in the development environment to the production environment. Üyelik ve roller yapılandırmasına bağlı olarak, geliştirme ortamında oluşturulan kullanıcı hesaplarını üretim veritabanına başarıyla kopyalayasanız bile, bu kullanıcılar üretimde Web uygulamasında oturum açamasa da olasıdır.Depending on the Membership and Roles configuration, it is possible that even if you successfully copy the user accounts that were created in the development environment to the production database, these users cannot sign into the web application in production. Bu sorunun nedenine bakacağız ve bunun oluşmasını nasıl önleyebiliriz.We'll look at the cause of this issue and discuss how to prevent it from happening.

ASP.NET, Visual Studio 'dan başlatılabilen iyi bir Web sitesi yönetim aracı (WSAT) ile birlikte gelir ve Kullanıcı hesabı, roller ve yetkilendirme kurallarının Web tabanlı bir arabirim aracılığıyla yönetilmesini sağlar.ASP.NET ships with a nice Web Site Administration Tool (WSAT) that can be launched from Visual Studio and allows the user account, roles, and authorization rules to be managed through a web-based interface. Ne yazık ki, WSAT yalnızca yerel Web siteleri için geçerlidir; Yani, üretim ortamındaki Web uygulaması için Kullanıcı hesaplarını, rolleri ve yetkilendirme kurallarını uzaktan yönetmek için kullanılamaz.Unfortunately, the WSAT only works for local websites, meaning that it cannot be used to remotely manage user accounts, roles, and authorization rules for the web application in the production environment. Üretim Web sitenizdeki WSAT benzeri davranışları uygulamak için farklı yöntemlere bakacağız.We'll look at different ways to implement WSAT-like behavior from your production website.

ASPNET_regsql. exe ' yi kullanarak veritabanı nesneleri eklemeAdding the Database Objects Using aspnet_regsql.exe

Veritabanı dağıtma öğreticisi, verileri geliştirme veritabanından üretim veritabanına kopyalamayı ve bu tekniklerin uygulama Hizmetleri veritabanı nesnelerini üretim veritabanına kopyalamak için kesinlikle kullanılabileceğini gösterdi.The Deploying a Database tutorial showed how to copy the tables and data from the development database to the production database, and these techniques can certainly be used to copy the application services database objects to the production database. Başka bir seçenek de, uygulama Hizmetleri veritabanı nesnelerini bir veritabanından ekleyen veya kaldıran aspnet_regsql.exe aracıdır.Another option is the aspnet_regsql.exe tool, which adds or removes the application services database objects from a database.

Note

aspnet_regsql.exe Aracı, belirtilen veritabanında veritabanı nesnelerini oluşturur.The aspnet_regsql.exe tool creates the database objects on a specified database. Bu veritabanı nesnelerindeki verileri geliştirme veritabanından üretim veritabanına geçirmez.It does not migrate data in those database objects from the development database to the production database. Geliştirme veritabanındaki kullanıcı hesabı ve rol bilgilerini üretim veritabanına kopyalamak için bir veritabanı dağıtma Öğreticisi ' nde ele alınan teknikleri kullanın.If you mean to copy the user account and role information in the development database to the production database use the techniques covered in the Deploying a Database tutorial.

aspnet_regsql.exe aracını kullanarak veritabanı nesnelerinin üretim veritabanına nasıl ekleneceğini inceleyelim.Let s look at how to add the database objects to the production database using the aspnet_regsql.exe tool. Windows Gezgini 'ni açarak ve bilgisayarınızdaki .NET Framework sürüm 2,0 dizinine giderek başlayın,% WINDIR% \ Microsoft. NET\Framework\v2.0.50727.Start by opening Windows Explorer and navigating to the .NET Framework version 2.0 directory on your computer, %WINDIR%\ Microsoft.NET\Framework\v2.0.50727. aspnet_regsql.exe aracını bulmanız gerekir.There you should find the aspnet_regsql.exe tool. Bu araç, komut satırından kullanılabilir, ancak aynı zamanda bir grafik kullanıcı arabirimi de içerir; grafik bileşenini başlatmak için aspnet_regsql.exe dosyasına çift tıklayın.This tool can be used from the command-line, but it also includes a graphical user interface; double-click the aspnet_regsql.exe file to launch its graphical component.

Aracı, amacını açıklayan bir giriş ekranı görüntüleyerek başlar.The tool starts by displaying a splash screen explaining its purpose. Şekil 1 ' de gösterilen "Kurulum seçeneği seçin" ekranına ilerlemek için Ileri ' ye tıklayın.Click Next to advance to the "Select a Setup Option" screen, which is shown in Figure 1. Buradan, uygulama Hizmetleri veritabanı nesnelerini eklemeyi veya bir veritabanından kaldırmayı seçebilirsiniz.From here you can choose to add the application services database objects or remove them from a database. Bu nesneleri üretim veritabanına eklemek istiyoruz, "uygulama hizmetleri için SQL Server Yapılandır" seçeneğini belirleyin ve Ileri ' ye tıklayın.Because we want to add these objects to the production database, select the "Configure SQL Server for application services" option and click Next.

Uygulama Hizmetleri için SQL Server yapılandırmayı seçinChoose to Configure SQL Server for Application Services

Şekil 1: Uygulama Hizmetleri Için SQL Server yapılandırmayı seçin (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 1: Choose to Configure SQL Server for Application Services (Click to view full-size image)

"Sunucu ve veritabanını seçin" ekranında, veritabanına bağlanmak için bilgi ister.In "Select the Server and Database" screen prompts for information to connect to the database. Web barındırma şirketiniz tarafından sağlanan veritabanı sunucusunu, güvenlik kimlik bilgilerini ve veritabanı adını girin ve Ileri ' ye tıklayın.Enter the database server, the security credentials, and the database name supplied to you by your web hosting company and click Next.

Note

Veritabanı sunucunuzu ve kimlik bilgilerinizi girdikten sonra, veritabanı açılan listesini genişletirken bir hata alabilirsiniz.After entering your database server and credentials you may get an error when expanding the database drop-down list. aspnet_regsql.exe Aracı, sunucudaki veritabanlarının listesini almak için sysdatabases sistem tablosunu sorgular, ancak bazı Web barındırma şirketleri bu bilgilerin genel kullanıma açık olmaması için veritabanı sunucularını kilitler.The aspnet_regsql.exe tool queries the sysdatabases system table to retrieve a list of databases on the server, but some web hosting companies lock down their database servers so that this information is not publicly available. Bu hatayı alırsanız, doğrudan açılan listeye veritabanı adını yazabilirsiniz.If you get this error you can type the database name directly into the drop-down list.

, veritabanı bağlantı bilgilerinizi Içeren Aracı sağlayınSupply the Tool With Your Database s Connection Information

Şekil 2: veritabanını veritabanınızın bağlantı bilgileriyle sağlama (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 2: Supply the Tool With Your Database s Connection Information (Click to view full-size image)

Sonraki ekranda, uygulama Hizmetleri veritabanı nesneleri belirtilen veritabanına ekleneceklerinde, gerçekleşecek şekilde olan eylemler özetlenmektedir.The subsequent screen summarizes the actions that are about to take place, namely that the application services database objects are going to be added to the specified database. Bu eylemi gerçekleştirmek için Ileri ' ye tıklayın.Click Next to complete this action. Birkaç dakika sonra, veritabanı nesnelerinin eklendiğini belirten son ekran görüntülenir (bkz. Şekil 3).After a few moments, the final screen is displayed, noting that the database objects have been added (see Figure 3).

Başarılı ! Uygulama Hizmetleri veritabanı nesneleri üretim veritabanına eklendiSuccess! The Application Services Database Objects Were Added to the Production Database

Şekil 3: başarılı!Figure 3: Success! Uygulama Hizmetleri veritabanı nesneleri üretim veritabanına eklendi (tam boyutlu görüntüyü görüntülemek Için tıklayın)The Application Services Database Objects Were Added to the Production Database (Click to view full-size image)

Uygulama Hizmetleri veritabanı nesnelerinin üretim veritabanına başarıyla eklendiğini doğrulamak için SQL Server Management Studio açın ve üretim veritabanınıza bağlanın.To verify that the application services database objects were successfully added to the production database, open SQL Server Management Studio and connect to your production database. Şekil 4 ' te gösterildiği gibi, artık veritabanınızda uygulama Hizmetleri veritabanı tablolarını, aspnet_Applications, aspnet_Membership``aspnet_Usersve benzerlerini görmeniz gerekir.As Figure 4 shows, you should now see the application services database tables in your database, aspnet_Applications, aspnet_Membership, aspnet_Users, and so forth.

veritabanı nesnelerinin üretim veritabanına eklendiğini onaylayınConfirm That the Database Objects Were Added to the Production Database

Şekil 4: veritabanı nesnelerinin üretim veritabanına eklendiğini onaylayın (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 4: Confirm That the Database Objects Were Added to the Production Database (Click to view full-size image)

Yalnızca, uygulama hizmetlerini kullanmaya başladıktan sonra Web uygulamanızı ilk kez veya ilk kez dağıttığınızda aspnet_regsql.exe aracını kullanmanız gerekir.You will only need to use the aspnet_regsql.exe tool when deploying your web application for the first time or for the first time after you have started using the application services. Bu veritabanı nesneleri üretim veritabanından olduktan sonra, yeniden eklenmesi veya değiştirilmesi gerekmez.Once these database objects are on the production database they won't need to be re-added or modified.

Kullanıcı hesaplarını geliştirmeden üretime kopyalamaCopying User Accounts from Development to Production

Uygulama hizmetleri bilgilerini bir SQL Server veritabanına depolamak için SqlMembershipProvider ve SqlRoleProvider sağlayıcı sınıflarını kullanırken, Kullanıcı hesabı ve rol bilgileri, aspnet_Users, aspnet_Membership, aspnet_Rolesve aspnet_UsersInRolesdahil olmak üzere çeşitli veritabanı tablolarında depolanır (diğerleri arasında).When using the SqlMembershipProvider and SqlRoleProvider provider classes to store the application services information in a SQL Server database, the user account and role information is stored in a variety of database tables, including aspnet_Users, aspnet_Membership, aspnet_Roles, and aspnet_UsersInRoles, among others. Geliştirme sırasında geliştirme ortamında Kullanıcı hesapları oluşturursanız, ilgili kayıtları geçerli veritabanı tablolarından kopyalayarak, bu kullanıcı hesaplarını üretimde çoğaltabilirsiniz.If during development you create user accounts in the development environment you can replicate those user accounts in production by copying the corresponding records from the applicable database tables. Uygulama Hizmetleri veritabanı nesnelerini dağıtmak için veritabanı Yayımlama Sihirbazı 'Nı kullandıysanız kayıtları kopyalamak için de seçmiş olabilirsiniz; Bu, geliştirmede oluşturulan kullanıcı hesaplarının de üretimde olması ile sonuçlanacaktır.If you used the Database Publishing Wizard to deploy the application services database objects you may have also elected to copy the records, which would result in the user accounts created in development to also be on production. Ancak, yapılandırma ayarlarınıza bağlı olarak, hesaplarını geliştirmede oluşturulan ve üretime kopyalanan kullanıcıların üretim Web sitesinden oturum açmadığını fark edebilirsiniz.But, depending on your configuration settings, you may find that those users whose accounts were created in development and copied to production are unable to login from the production website. Ne sağlar?What gives?

SqlMembershipProvider ve SqlRoleProvider sağlayıcı sınıfları, tek bir veritabanının birden çok uygulama için kullanıcı deposu olarak kullanılabileceği şekilde tasarlanmıştı. bu şekilde, her uygulamanın teorik olarak, kullanıcıların aynı ada sahip olan ve çakışan Kullanıcı adları ve rolleri vardır.The SqlMembershipProvider and SqlRoleProvider provider classes were designed such that a single database could serve as a user store for multiple applications, where each application could, in theory, have users with overlapping usernames and roles with the same name. Bu esnekliğe izin vermek için, veritabanı aspnet_Applications tablosundaki uygulamaların bir listesini tutar ve her Kullanıcı bu uygulamalardan biriyle ilişkilendirilir.To allow for this flexibility, the database maintains a list of applications in the aspnet_Applications table, and each user is associated with one of these applications. Özellikle aspnet_Users tablo, her kullanıcıyı aspnet_Applications tablosundaki bir kayda bağlayan bir ApplicationId sütununa sahiptir.Specifically, the aspnet_Users table has an ApplicationId column that ties each user to a record in the aspnet_Applications table.

ApplicationId sütununa ek olarak, aspnet_Applications tablo, uygulama için daha fazla insan dostu bir ad sağlayan bir ApplicationName sütunu da içerir.In addition to the ApplicationId column, the aspnet_Applications table also includes an ApplicationName column, which provides a more human-friendly name for the application. Bir Web sitesi, oturum açma sayfasından bir kullanıcı kimlik bilgilerini doğrulama gibi bir kullanıcı hesabıyla çalışmayı denediğinde SqlMembershipProvider sınıfa hangi uygulamanın birlikte çalıştığını söylemelidir.When a website attempts to work with a user account, such as validating a user s credentials from the login page, it must tell the SqlMembershipProvider class what application to work with. Genellikle bunu uygulama adı sağlayarak yapar ve bu değer, Web.config-özel olarak applicationName özniteliği aracılığıyla sağlayıcının s yapılandırmasından gelir.It usually does this by supplying the application name, and the this value comes from the provider s configuration in Web.config - specifically via the applicationName attribute.

Ancak applicationName özniteliği Web.configbelirtilmemişse ne olur?But what happens if the applicationName attribute is not specified in Web.config? Böyle bir durumda, üyelik sistemi applicationName değer olarak uygulama kök yolunu kullanır.In such a case the Membership system uses the application root path as the applicationName value. applicationName özniteliği Web.configaçıkça ayarlanmamışsa, geliştirme ortamının ve üretim ortamının farklı bir uygulama kökü kullanmasına ve bu nedenle uygulama hizmetlerindeki farklı uygulama adlarıyla ilişkilendirilecektir.If the applicationName attribute is not explicitly set in Web.config, then, there is the possibility that the development environment and production environment use a different application root and therefore will be associated with different application names in the application services. Bu tür bir uyuşmazlık oluşursa, geliştirme ortamında oluşturulan kullanıcıların, üretim ortamı için ApplicationId değeriyle eşleşmeyen bir ApplicationId değeri olacaktır.If such a mismatch occurs then those users created in the development environment will have an ApplicationId value that does not match with the ApplicationId value for the production environment. Net sonuç, bu kullanıcıların oturum açabilmeyeceği bir sonuçlardır.The net result is that those users won't be able to login.

Note

Bu durumda kendinizi bulursanız, Kullanıcı hesapları, eşleşmeyen bir ApplicationId değeri ile üretime kopyalanmışsa, bu hatalı ApplicationId değerlerini üretimde kullanılan ApplicationId için güncelleştirmek üzere bir sorgu yazabilirsiniz.If you find yourself in this situation - with user accounts copied to production with a mismatched ApplicationId value - you could write a query to update these incorrect ApplicationId values to the ApplicationId used on production. Güncelleştirildikten sonra, hesapları geliştirme ortamında oluşturulan kullanıcılar artık üretimde Web uygulamasında oturum açabiliyor.Once updated, the users whose accounts were created on the development environment would now be able to sign into the web application on production.

İyi haberler, iki ortamın aynı ApplicationId kullandığından emin olmak için uygulayabileceğiniz basit bir adımdır. tüm uygulama hizmetleri sağlayıcılarınız için Web.config applicationName özniteliğini açıkça ayarlayın.The good news is that there is a simple step you can take to ensure that the two environments use the same ApplicationId - explicitly set the applicationName attribute in Web.config for all of your application services providers. applicationName özniteliğini, <membership> ve <roleManager> öğelerinde "Bookincelemeleri" olarak, Web.config tarafından gösterilen kod parçacığı olarak ayarlar.I explicitly set the applicationName attribute to "BookReviews" in the <membership> and <roleManager> elements as this snippet from Web.config shows.

<membership defaultProvider="ReviewMembership">
    <providers>
        <clear />

        <add type="System.Web.Security.SqlMembershipProvider" 
             name="ReviewMembership" 
             connectionStringName="ReviewsConnectionString" 
             applicationName="BookReviews" />
    </providers>
</membership>

applicationName özniteliğini ve bunun arkasındaki ktionale ayarlama hakkında daha fazla bilgi için Scott Guthrie s blog gönderisine bakın, ASP.NET üyeliğini ve diğer sağlayıcıları yapılandırırken her zaman ApplicationName özelliğini ayarlayın.For more discussion on setting the applicationName attribute and the rationale behind it, refer to Scott Guthrie s blog post, Always set the applicationName property when configuring ASP.NET Membership and other Providers.

Üretim ortamında kullanıcı hesaplarını yönetmeManaging User Accounts in the Production Environment

ASP.NET Web sitesi yönetim aracı (WSAT) Kullanıcı hesapları oluşturmayı ve yönetmeyi, rolleri tanımlamanızı ve uygulamayı ve Kullanıcı ve rol tabanlı yetkilendirme kurallarını yazımı kolaylaştırır.The ASP.NET Web Site Administration Tool (WSAT) makes it easy to create and manage user accounts, define and apply roles, and spell out user- and role-based authorization rules. Çözüm Gezgini gidip ASP.NET yapılandırma simgesine tıklayarak veya Web sitesine veya proje menülerine gidip ASP.NET yapılandırma menü öğesini seçerek, Visual Studio 'dan WSAT 'ı başlatabilirsiniz.You can launch the WSAT from Visual Studio by going to the Solution Explorer and clicking the ASP.NET Configuration icon or by going to the Website or Project menus and selecting the ASP.NET Configuration menu item. Ne yazık ki, WSAT yalnızca yerel Web siteleriyle çalışabilir.Unfortunately, the WSAT can only work with local websites. Bu nedenle, üretim ortamındaki Web sitesini yönetmek için iş istasyonunuzdan WSAT 'ı kullanamazsınız.Therefore, you cannot use the WSAT from your workstation to manage the website in the production environment.

İyi haberler, WSAT tarafından sağlanan tüm işlevlerin üyelik ve roller API 'Leri aracılığıyla programlı bir şekilde kullanılabilmesini sağlamadır; Ayrıca, WSAT ekranlarından birçoğu standart ASP.NET login ile ilgili denetimleri kullanır.The good news is that all of the functionality exposed provided by the WSAT is available programmatically through the Membership and Roles APIs; furthermore, many of the WSAT screens use the standard ASP.NET Login-related controls. Kısaca, Web sitenize gerekli yönetim özelliklerini sunan ASP.NET sayfaları ekleyebilirsiniz.In short, you can add ASP.NET pages to your website that offer the necessary management capabilities.

Daha önceki bir öğreticinin, kitap Incelemeleri Web uygulamasını bir ~/Admin klasörü içerecek şekilde güncelleştirdiklerini ve bu klasörün yalnızca yönetici rolündeki kullanıcılara izin verecek şekilde yapılandırıldığını unutmayın.Recall that an earlier tutorial updated the Book Reviews web application to include an ~/Admin folder, and this folder has been configured to only allow users in the Admin role. CreateAccount.aspx adlı klasöre, yöneticinin yeni bir kullanıcı hesabı oluşturanan bir sayfa ekledim.I added a page to that folder named CreateAccount.aspx from which an administrator can create a new user account. Bu sayfa, yeni bir kullanıcı hesabı oluşturmak için Kullanıcı arabirimi ve arka uç mantığını göstermek üzere CreateUserWizard denetimini kullanır.This page uses the CreateUserWizard control to display the user interface and backend logic for creating a new user account. Ne kadar çok, denetimi yeni kullanıcının da yönetici rolüne eklenip eklenmeyeceğini belirten bir onay kutusu içerecek şekilde özelleştirdim (bkz. Şekil 5).What s more, I customized the control to include a CheckBox that prompts whether the new user should also be added to the Admin role (see Figure 5). Biraz iş sayesinde, başka bir şekilde WSAT tarafından sağlanabilecek Kullanıcı ve rol yönetimiyle ilgili görevleri uygulayan özel bir sayfa kümesi oluşturabilirsiniz.With a little bit of work you can build a custom set of pages that implements the user and role management-related tasks that would otherwise be provided by the WSAT.

Note

Üyelik ve rol API 'Lerini kullanma hakkında daha fazla bilgi için, oturum açma ile ilgili ASP.NET Web denetimleriyle birlikte, Web sitesi güvenlik öğreticilerimiokuduğunuzdan emin olun.For more information on using the Membership and Roles APIs along with the Login-related ASP.NET Web controls, be sure to read my Website Security Tutorials. CreateUserWizard denetimini özelleştirme hakkında daha fazla bilgi için Kullanıcı hesapları oluşturma ve ek kullanıcı bilgileri öğreticilerini depolama ya da CreateUserWizard denetimini özelleştiren Erich Peterson s makalesini inceleyin.For more on customizing the CreateUserWizard control refer to the Creating User Accounts and Storing Additional User Information tutorials, or check out Erich Peterson s article, Customizing the CreateUserWizard Control.

yöneticileri yeni kullanıcı hesapları oluşturabilirAdministrators Can Create New User Accounts

Şekil 5: Yöneticiler yeni kullanıcı hesapları oluşturabilir (tam boyutlu görüntüyü görüntülemek için tıklatın)Figure 5: Administrators Can Create New User Accounts (Click to view full-size image)

WSAT 'ın tüm işlevlerine ihtiyacınız varsa, kendi web sitesi yönetim aracınızı(yazarın can) özel bır WSAT benzeri araç oluşturma sürecinde izlenecek bir şekilde gözden geçirin.If you need the full functionality of the WSAT check out Rolling Your Own Web Site Administration Tool, in which author Dan Clem walks through the process of building a custom WSAT-like tool. Dan uygulama kaynak kodunu paylaşır (içinde C#) ve barındırılan Web sitenize eklemek için adım adım yönergeler sağlar.Dan shares his application s source code (in C#) and provides step-by-step instructions for adding it to your hosted website.

ÖzetSummary

Uygulama Hizmetleri veritabanı uygulamasını kullanan bir Web uygulaması dağıtıldığında, önce üretim veritabanının gerekli veritabanı nesnelerine sahip olduğundan emin olmanız gerekir.When deploying a web application that uses the application services database implementation you must first ensure that the production database has the requisite database objects. Bu nesneler, veritabanı dağıtma öğreticisinde açıklanan teknikler kullanılarak eklenebilir. Alternatif olarak, bu öğreticide gördüğünüz gibi aspnet_regsql.exe aracını kullanabilirsiniz.These objects can be added using the techniques discussed in the Deploying a Database tutorial; alternatively, you can use the aspnet_regsql.exe tool, as we saw in this tutorial. Geliştirme ve üretim ortamlarında kullanılan uygulama adının (geliştirme ortamında oluşturulan kullanıcı ve rollerin üretimde geçerli olmasını istiyorsanız önemli olan) ve teknikleri ile ilgili diğer sorunlar üretim ortamındaki kullanıcıları ve rolleri yönetme.Other challenges we touched on center around synchronizing the application name used in the development and production environments (which is important if you want users and roles created in the development environment to be valid on production) and techniques for managing the users and roles in the production environment.

Programlamanın kutlu olsun!Happy Programming!

Daha Fazla BilgiFurther Reading

Bu öğreticide ele alınan konular hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:For more information on the topics discussed in this tutorial, refer to the following resources: