Ismerkedés az Azure Cloud Services szolgáltatással és az ASP.NET keretrendszerrelGet started with Azure Cloud Services and ASP.NET

ÁttekintésOverview

Ebből az oktatóanyagból megtudhatja, hogyan hozhat létre többrétegű .NET-alkalmazást ASP.NET MVC kezelőfelülettel, illetve hogyan telepítheti azt egy Azure-felhőszolgáltatásban.This tutorial shows how to create a multi-tier .NET application with an ASP.NET MVC front-end, and deploy it to an Azure cloud service. Az alkalmazás az Azure SQL Database szolgáltatást, az Azure Blob szolgáltatást és az Azure Queue szolgáltatást használja.The application uses Azure SQL Database, the Azure Blob service, and the Azure Queue service. A Visual Studio projekt letölthető az MSDN kódgalériából.You can download the Visual Studio project from the MSDN Code Gallery.

Ebből az oktatóanyagból megtudhatja, hogyan állíthatja össze és futtathatja az alkalmazást helyileg, hogyan telepítheti az Azure-ban, hogyan futtathatja a felhőben, valamint hogyan építheti fel az alapoktól kezdve.The tutorial shows you how to build and run the application locally, how to deploy it to Azure and run in the cloud, and how to build it from scratch. Ha szeretné, kezdheti az alapoktól a felépítést, majd később elvégezheti a tesztelés és a telepítés lépéseit.You can start by building from scratch and then do the test and deploy steps afterward if you prefer.

Contoso Ads alkalmazásContoso Ads application

Ez az alkalmazás egy hirdetőtábla.The application is an advertising bulletin board. A felhasználók szöveg megadásával és egy kép feltöltésével hoznak létre hirdetéseket.Users create an ad by entering text and uploading an image. Láthatják a hirdetések miniatűr képekkel ellátott listáját, majd teljes méretben is megtekinthetik a képet, amikor kiválasztanak egy hirdetést a részletek megtekintése céljából.They can see a list of ads with thumbnail images, and they can see the full-size image when they select an ad to see the details.

Hirdetéslista

Az alkalmazás üzenetsor-központú munkasémát használ, hogy áthelyezze a miniatűrök létrehozásának processzorigényes feladatát egy háttérfolyamatra.The application uses the queue-centric work pattern to off-load the CPU-intensive work of creating thumbnails to a back-end process.

Alternatív architektúra: App Service és webjobsAlternative architecture: App Service and WebJobs

Ebből az oktatóanyagból megtudhatja, hogyan futtathat előtér- és háttéralkalmazásokat egyaránt az Azure felhőszolgáltatásban.This tutorial shows how to run both front-end and back-end in an Azure cloud service. Alternatív megoldásként futtassa az előtér- Azure app Service , és használja a webjobs funkciót a háttérrendszer számára.An alternative is to run the front-end in Azure App Service and use the WebJobs feature for the back-end. A WebJobs szolgáltatást alkalmazó oktatóanyagot a Get Started with the Azure WebJobs SDK (Ismerkedés az Azure WebJobs SDK-val) című részben találja.For a tutorial that uses WebJobs, see Get Started with the Azure WebJobs SDK. További információ a forgatókönyvhöz legjobban illeszkedő szolgáltatások kiválasztásáról: Azure app Service, Cloud Services és Virtual Machines összehasonlítás.For information about how to choose the services that best fit your scenario, see Azure App Service, Cloud Services, and virtual machines comparison.

Ismertetett témákWhat you'll learn

  • A gép alkalmassá tétele az Azure-alapú fejlesztésre az Azure SDK telepítésével.How to enable your machine for Azure development by installing the Azure SDK.
  • Visual Studio felhőszolgáltatás-projekt létrehozása ASP.NET MVC webes és feldolgozói szerepkörök alkalmazásával.How to create a Visual Studio cloud service project with an ASP.NET MVC web role and a worker role.
  • A felhőszolgáltatás-projekt helyi tesztelése az Azure Storage Emulator használatával.How to test the cloud service project locally, using the Azure storage emulator.
  • A felhőprojekt közzététele egy Azure-felhőszolgáltatásban és tesztelése egy Azure-tárfiók használatával.How to publish the cloud project to an Azure cloud service and test using an Azure storage account.
  • Fájlok feltöltése és tárolása az Azure Blob szolgáltatásban.How to upload files and store them in the Azure Blob service.
  • Az Azure Queue szolgáltatás használata a rétegek közötti kommunikációhoz.How to use the Azure Queue service for communication between tiers.

ElőfeltételekPrerequisites

Az oktatóanyag feltételezi, hogy tisztában van az Azure-felhőszolgáltatások alapfogalmaival, például a webes szerepkör és a feldolgozói szerepkör terminológiájával.The tutorial assumes that you understand basic concepts about Azure cloud services such as web role and worker role terminology. Továbbá azt is feltételezi, hogy az ASP.NET MVC és a Web Forms Visual Studióban való használatának módját is ismeri.It also assumes that you know how to work with ASP.NET MVC or Web Forms projects in Visual Studio. A mintaalkalmazás az MVC-t használja, de az oktatóanyag nagy része a Web Forms esetében is alkalmazható.The sample application uses MVC, but most of the tutorial also applies to Web Forms.

Helyileg Azure-előfizetés nélkül is futtathatja az alkalmazást, de a felhőben való közzétételhez előfizetés szükséges.You can run the app locally without an Azure subscription, but you'll need one to deploy the application to the cloud. Ha nincs fiókja, aktiválhatja az MSDN előfizetői előnyeit, vagy regisztrálhat egy ingyenes próbaverzióra.If you don't have an account, you can activate your MSDN subscriber benefits or sign up for a free trial.

Az oktatóanyag utasításai a következő termékek bármelyikével működnek:The tutorial instructions work with any of the following products:

  • Visual Studio 2013Visual Studio 2013
  • Visual Studio 2015Visual Studio 2015
  • Visual Studio 2017Visual Studio 2017
  • Visual Studio 2019Visual Studio 2019

Ha egyikkel sem rendelkezik, lehet, hogy az Azure SDK telepítésekor a Visual Studio automatikusan telepítve lesz.If you don't have one of these, Visual Studio may be installed automatically when you install the Azure SDK.

AlkalmazásarchitektúraApplication architecture

Az alkalmazás SQL-adatbázisban tárolja a hirdetéseket, amihez az Entity Framework Code First megoldást használja a táblák létrehozásához és az adatok eléréséhez.The app stores ads in a SQL database, using Entity Framework Code First to create the tables and access the data. Az egyes hirdetések esetében az adatbázis két URL-címet tárol, egyet a teljes méretű képhez, egyet pedig a miniatűrhöz.For each ad, the database stores two URLs, one for the full-size image and one for the thumbnail.

Hirdetés tábla

Amikor egy felhasználó feltölt egy képet, a webes szerepkörrel rendelkező előtér-alkalmazás egy Azure-blobban tárolja azt, a hirdetés információit pedig az adatbázisban a blobra mutató URL-címmel együtt.When a user uploads an image, the front-end running in a web role stores the image in an Azure blob, and it stores the ad information in the database with a URL that points to the blob. Ezzel egy időben üzenetet ír egy Azure-üzenetsorba.At the same time, it writes a message to an Azure queue. A feldolgozói szerepkörrel futó háttérfolyamat rendszeres időközönként lekérdezi az új üzeneteket az üzenetsorról.A back-end process running in a worker role periodically polls the queue for new messages. Amikor egy új üzenet jelenik meg, a feldolgozói szerepkör létrehozza a kép miniatűrjét, és frissíti a miniatűr URL-címét a hirdetés adatbázismezőjében.When a new message appears, the worker role creates a thumbnail for that image and updates the thumbnail URL database field for that ad. Az alábbi ábra bemutatja, hogyan működnek együtt az alkalmazás részei.The following diagram shows how the parts of the application interact.

Contoso Ads architektúra

A fejlesztési környezet kialakításaSet up the development environment

Elsőként állítsa be a fejlesztési környezetet a Visual Studióval és az Azure SDK-val.To start, set up your development environment with Visual Studio and the Azure SDK.

  • A Visual Studio 2019 magában foglalja az Azure SDK-t.Visual Studio 2019 includes the Azure SDK. Visual Studio 2019 használja, ha nincsenek további telepítésre a fejlesztési környezet van szükség.If you're using Visual Studio 2019, no additional setup is needed for the development environment.

  • A Visual Studio 2015 esetén a következő hivatkozásra kattintva telepítheti az Azure SDK-t a Visual Studio 2015-höz.For Visual Studio 2015, click the following link to install the Azure SDK for Visual Studio 2015.

  • A Visual Studio 2013 esetén a következő hivatkozásra kattintva telepítheti az Azure SDK-t a Visual Studio 2013-hoz.For Visual Studio 2013, click the following link to install the Azure SDK for Visual Studio 2013.

  • Ha nincs telepítve a Visual Studio, használja a következő telepítéséhez Visual Studio 2019 Azure SDK-val.If you don't have Visual Studio installed, use the following to install Visual Studio 2019 with the Azure SDK.

Megjegyzés

Attól függően, hogy mennyi SDK-függőség van telepítve a számítógépen, az SDK telepítése hosszú időt is igénybe vehet – néhány perctől akár több mint fél óráig is tarthat.Depending on the number of the SDK dependencies already on your machine, installing the SDK could take a long time, from several minutes to a half hour or more.

A kész megoldás letöltése és futtatásaDownload and run the completed solution

  1. Töltse le és csomagolja ki a kész megoldást.Download and unzip the completed solution.

  2. Indítsa el a Visual Studiót.Start Visual Studio.

  3. Válassza a Fájl menü Projekt megnyitása elemét, keresse meg a letöltött megoldást, majd nyissa meg a megoldásfájlt.From the File menu choose Open Project, navigate to where you downloaded the solution, and then open the solution file.

  4. Nyomja le a Ctrl+Shift+B billentyűkombinációt a megoldás felépítéséhez.Press CTRL+SHIFT+B to build the solution.

    Alapértelmezés szerint a Visual Studio automatikusan visszaállítja a NuGet-csomag tartalmát, amelyet a .zip fájl nem tartalmazott.By default, Visual Studio automatically restores the NuGet package content, which was not included in the .zip file. Ha a csomagok nem állnak vissza, telepítse őket manuálisan. Ehhez lépjen a Manage NuGet Packages for Solution (Megoldás NuGet-csomagjainak kezelése) párbeszédpanelre, és kattintson a Restore (Visszaállítás) gombra a jobb felső sarokban.If the packages don't restore, install them manually by going to the Manage NuGet Packages for Solution dialog box and clicking the Restore button at the top right.

  5. A Megoldáskezelőben győződjön meg arról, hogy a ContosoAdsCloudService van kiválasztva kiindulási projektként.In Solution Explorer, make sure that ContosoAdsCloudService is selected as the startup project.

  6. Ha a Visual Studio 2015-öt használja, módosítsa az SQL Server kapcsolati sztringjét az alkalmazás Web.config fájljában a ContosoAdsWeb projekt esetében, illetve a ServiceConfiguration.Local.cscfg fájlt a ContosoAdsCloudService projekt esetében.If you're using Visual Studio 2015 or higher, change the SQL Server connection string in the application Web.config file of the ContosoAdsWeb project and in the ServiceConfiguration.Local.cscfg file of the ContosoAdsCloudService project. Mindkét esetben módosítsa a „(localdb)\v11.0” elemet a következőre: „(localdb)\MSSQLLocalDB”.In each case, change "(localdb)\v11.0" to "(localdb)\MSSQLLocalDB".

  7. Az alkalmazás futtatásához nyomja le a Ctrl+F5 billentyűkombinációt.Press CTRL+F5 to run the application.

    Amikor helyileg futtat egy felhőszolgáltatás-projektet, a Visual Studio automatikusan meghívja az Azure Compute Emulator és az Azure Storage Emulator eszközöket.When you run a cloud service project locally, Visual Studio automatically invokes the Azure compute emulator and Azure storage emulator. A Compute Emulator a számítógép erőforrásait felhasználva szimulálja a webes és a feldolgozói szerepkörök környezeteit.The compute emulator uses your computer's resources to simulate the web role and worker role environments. A Storage Emulator egy SQL Server Express LocalDB adatbázis használatával szimulálja az Azure felhőalapú tárolást.The storage emulator uses a SQL Server Express LocalDB database to simulate Azure cloud storage.

    Egy felhőszolgáltatás-projekt első futtatásakor nagyjából egy percet vesz igénybe az emulátorok elindítása.The first time you run a cloud service project, it takes a minute or so for the emulators to start up. Az emulátorok elindulását követően az alapértelmezett böngésző megnyitja az alkalmazás kezdőlapját.When emulator startup is finished, the default browser opens to the application home page.

    Contoso Ads architektúra

  8. Kattintson a Create an Ad (Hirdetés létrehozása) gombra.Click Create an Ad.

  9. Adjon meg néhány tesztadatot, és válasszon ki egy feltölteni kívánt .jpg formátumú képet, majd kattintson a Create (Létrehozás) elemre.Enter some test data and select a .jpg image to upload, and then click Create.

    Lap létrehozása

    Az alkalmazás az Index lapra ugrik, de az új hirdetés miniatűrje nem jelenik meg, mert a feldolgozása még nem történt meg.The app goes to the Index page, but it doesn't show a thumbnail for the new ad because that processing hasn't happened yet.

  10. Várjon egy kicsit, majd frissítse az Index lapot a miniatűr megjelenítéséhez.Wait a moment and then refresh the Index page to see the thumbnail.

    Index lap

  11. Kattintson a hirdetés Details (Részletek) elemére a teljes méretű kép megjelenítéséhez.Click Details for your ad to see the full-size image.

    Részletek lap

Az alkalmazást teljes mértékben helyi számítógépén futtatja, a felhőhöz való csatlakozás nélkül.You've been running the application entirely on your local computer, with no connection to the cloud. A Storage Emulator az üzenetsor és a blob adatait egy SQL Server Express LocalDB adatbázisban tárolja, az alkalmazás pedig egy másik LocalDB adatbázisban tárolja a hirdetés adatait.The storage emulator stores the queue and blob data in a SQL Server Express LocalDB database, and the application stores the ad data in another LocalDB database. Az Entity Framework Code First automatikusan létrehozta a hirdetés-adatbázist, amikor a webalkalmazás első alkalommal próbált hozzáférni ahhoz.Entity Framework Code First automatically created the ad database the first time the web app tried to access it.

A következő szakaszban konfigurálhatja a megoldást az Azure felhőbeli erőforrások használatára az üzenetsorok, blobok és alkalmazás-adatbázisok esetében a felhőben való futtatásakor.In the following section you'll configure the solution to use Azure cloud resources for queues, blobs, and the application database when it runs in the cloud. A helyi futtatásra felhőalapú tárolás és adatbázis-erőforrások használata esetén is van lehetőség.If you wanted to continue to run locally but use cloud storage and database resources, you could do that. Mindössze csak a kapcsolati sztringeket kell beállítani az útmutató alapján.It's just a matter of setting connection strings, which you'll see how to do.

Az alkalmazás központi telepítése az Azure-banDeploy the application to Azure

Az alkalmazás felhőben való futtatásához az alábbi lépéseket kell végrehajtania:You'll do the following steps to run the application in the cloud:

  • Hozzon létre egy Azure-felhőszolgáltatást.Create an Azure cloud service.
  • Hozzon létre egy Azure SQL-adatbázist.Create an Azure SQL database.
  • Hozzon létre egy Azure-tárfiókot.Create an Azure storage account.
  • Konfigurálja a megoldást arra, hogy az Azure-ban való futáskor az Azure SQL-adatbázist használja.Configure the solution to use your Azure SQL database when it runs in Azure.
  • Konfigurálja a megoldást arra, hogy az Azure-ban való futáskor az Azure-tárfiókot használja.Configure the solution to use your Azure storage account when it runs in Azure.
  • Telepítse a projektet az Azure-felhőszolgáltatásában.Deploy the project to your Azure cloud service.

Azure-felhőszolgáltatás létrehozásaCreate an Azure cloud service

Az Azure-felhőszolgáltatás az a környezet, amelyben az alkalmazás futni fog.An Azure cloud service is the environment the application will run in.

  1. Nyissa meg az Azure Portalt a böngészőjében.In your browser, open the Azure portal.

  2. Kattintson az Erőforrás létrehozása > Számítás > Felhőszolgáltatás elemre.Click Create a resource > Compute > Cloud Service.

  3. A DNS-név beviteli mezőben adja meg a felhőszolgáltatáshoz tartozó URL-előtagot.In the DNS name input box, enter a URL prefix for the cloud service.

    Ennek az URL-nek egyedinek kell lennie.This URL has to be unique. Ha olyan előtagot választ, amely már használatban van, hibaüzenetet kap.You'll get an error message if the prefix you choose is already in use.

  4. Adja meg a szolgáltatáshoz tartozó új erőforráscsoportot.Specify a new Resource group for the service. Kattintson az Új létrehozása elemre, majd adja meg a nevet az Erőforráscsoport beviteli mezőjében, például CS_contososadsRG.Click Create new and then type a name in the Resource group input box, such as CS_contososadsRG.

  5. Válassza ki a régiót, ahol telepíteni szeretné az alkalmazást.Choose the region where you want to deploy the application.

    Ez a mező határozza meg, hogy a felhőszolgáltatása melyik adatközpontban fog üzemelni.This field specifies which datacenter your cloud service will be hosted in. Termelési alkalmazások esetében az ügyfeleihez legközelebb eső régiót kellene kiválasztania.For a production application, you'd choose the region closest to your customers. A jelen oktatóanyag esetében válassza az Önhöz legközelebbi régiót.For this tutorial, choose the region closest to you.

  6. Kattintson a Create (Létrehozás) gombra.Click Create.

    Az alábbi képen egy CSvccontosoads.cloudapp.net URL-címmel ellátott felhőszolgáltatás létrehozása történik.In the following image, a cloud service is created with the URL CSvccontosoads.cloudapp.net.

    Új felhőszolgáltatás

Azure SQL-adatbázis létrehozásaCreate an Azure SQL database

Amikor az alkalmazás a felhőben fut, felhőalapú adatbázist fog használni.When the app runs in the cloud, it will use a cloud-based database.

  1. Az Azure Portalon kattintson az Erőforrás létrehozása > Adatbázisok > SQL Database elemre.In the Azure portal, click Create a resource > Databases > SQL Database.

  2. Az Adatbázis neve mezőbe írja be a következőt: contosoads.In the Database Name box, enter contosoads.

  3. Az Erőforráscsoport szakaszban kattintson a Meglévő használata elemre, majd válassza ki a felhőszolgáltatáshoz használt erőforráscsoportot.In the Resource group, click Use existing and select the resource group used for the cloud service.

  4. Az alábbi kép alapján kattintson a Kiszolgáló – kötelező beállítások konfigurálása és az Új kiszolgáló létrehozása elemre.In the following image, click Server - Configure required settings and Create a new server.

    Az adatbázis-kiszolgálóhoz vezető alagút

    Amennyiben az előfizetéséhez már tartozik egy kiszolgáló, alternatív megoldásként azt is kiválaszthatja a legördülő listából.Alternatively, if your subscription already has a server, you can select that server from the drop-down list.

  5. A Kiszolgálónév mezőben adja meg a csvccontosodbserver nevet.In the Server name box, enter csvccontosodbserver.

  6. Adjon meg egy rendszergazdai Bejelentkezési nevet és Jelszót.Enter an administrator Login Name and Password.

    Ha az Új kiszolgáló létrehozása elemet választotta, nem meglévő nevet és jelszót kell megadnia.If you selected Create a new server, you aren't entering an existing name and password here. Olyan új nevet és jelszót adjon meg, amelyet a későbbiekben az adatbázis eléréséhez fog használni.You're entering a new name and password that you're defining now to use later when you access the database. Ha korábban létrehozott adatbázist választott, akkor a rendszer a már létrehozott rendszergazdai felhasználói fiók jelszavát kéri.If you selected a server that you created previously, you'll be prompted for the password to the administrative user account you already created.

  7. Válassza ki ugyanazt a helyet, amelyet a felhőszolgáltatás számára is választott.Choose the same Location that you chose for the cloud service.

    Ha a felhőszolgáltatás és az adatbázis különböző adatközpontokban van (különböző régiókban), a késés mértéke megnő, és az adatközponton kívül használt sávszélességért fizetnie kell.When the cloud service and database are in different datacenters (different regions), latency will increase and you will be charged for bandwidth outside the data center. Az adatközponton belül használt sávszélesség ingyenes.Bandwidth within a data center is free.

  8. Jelölje be az Azure-szolgáltatások kiszolgálói hozzáférésének engedélyezése jelölőnégyzetet.Check Allow azure services to access server.

  9. Kattintson a Kiválasztás elemre az új kiszolgáló kijelöléséhez.Click Select for the new server.

    Új SQL-adatbáziskiszolgáló

  10. Kattintson a Create (Létrehozás) gombra.Click Create.

Azure-tárfiók létrehozásaCreate an Azure storage account

Az Azure-tárfiók erőforrásokat biztosít az üzenetsor és a blob adatainak felhőbeli tárolásához.An Azure storage account provides resources for storing queue and blob data in the cloud.

Egy valós alkalmazás esetében általában külön fiókot hozna létre az alkalmazás adatai és a naplózási adatok, illetve a tesztadatok és a termelési adatok számára is.In a real-world application, you would typically create separate accounts for application data versus logging data, and separate accounts for test data versus production data. Ebben az oktatóanyagban csak egy fiókot fog használni.For this tutorial, you'll use just one account.

  1. Az Azure Portalon kattintson az Erőforrás létrehozása > Tároló > Tárfiók – blob, fájl, tábla, üzenetsor elemre.In the Azure portal, click Create a resource > Storage > Storage account - blob, file, table, queue.

  2. A Név mezőbe írjon be egy URL-előtagot.In the Name box, enter a URL prefix.

    Ez az előtag és a mező alatt látható szöveg képezi a tárfiók egyedi URL-címét.This prefix plus the text you see under the box will be the unique URL to your storage account. Ha a megadott előtag már használatban van, másikat kell választania.If the prefix you enter has already been used by someone else, you'll have to choose a different prefix.

  3. Állítsa be az üzembe helyezési modellt klasszikus értékre.Set the Deployment model to Classic.

  4. A Replikáció legördülő listában válassza a Helyileg redundáns tárolás elemet.Set the Replication drop-down list to Locally redundant storage.

    Ha a georeplikáció engedélyezve van a tárfiókban, a tárolt tartalom replikálása egy másodlagos adatközpontba történik, amely ezáltal a feladatátvétel helyévé válik, amennyiben az elsődleges helyen jelentős katasztrófa következik be.When geo-replication is enabled for a storage account, the stored content is replicated to a secondary datacenter to enable failover if a major disaster occurs in the primary location. A georeplikáció további költségeket vonhat maga után.Geo-replication can incur additional costs. A teszt- és fejlesztői fiókok esetében általában nem érdemes fizetni a georeplikációért.For test and development accounts, you generally don't want to pay for geo-replication. További információ: Tárfiók létrehozása, kezelése vagy törlése.For more information, see Create, manage, or delete a storage account.

  5. Az Erőforráscsoport szakaszban kattintson a Meglévő használata elemre, majd válassza ki a felhőszolgáltatáshoz használt erőforráscsoportot.In the Resource group, click Use existing and select the resource group used for the cloud service.

  6. A Hely legördülő listában válassza ugyanazt a régiót, amelyet a felhőszolgáltatás számára is választott.Set the Location drop-down list to the same region you chose for the cloud service.

    Ha a felhőszolgáltatás és a tárfiók különböző adatközpontokban van (különböző régiókban), a késés mértéke megnő, és az adatközponton kívül használt sávszélességért fizetnie kell.When the cloud service and storage account are in different datacenters (different regions), latency will increase and you will be charged for bandwidth outside the data center. Az adatközponton belül használt sávszélesség ingyenes.Bandwidth within a data center is free.

    Az Azure-affinitáscsoportok egy olyan mechanizmust biztosítanak, amely minimálisra csökkenti az erőforrások között lévő távolságot az adatközpontban, csökkentve ezáltal a késés mértékét is.Azure affinity groups provide a mechanism to minimize the distance between resources in a data center, which can reduce latency. A jelen oktatóanyag nem használ affinitáscsoportokat.This tutorial does not use affinity groups. További információ: Affinitáscsoportok létrehozása az Azure-ban.For more information, see How to Create an Affinity Group in Azure.

  7. Kattintson a Create (Létrehozás) gombra.Click Create.

    Új tárfiók

    Az alábbi képen egy csvccontosoads.core.windows.net URL-címmel ellátott tárfiók lesz létrehozva.In the image, a storage account is created with the URL csvccontosoads.core.windows.net.

A megoldás konfigurálása arra, hogy az Azure-ban való futáskor az Azure SQL-adatbázist használjaConfigure the solution to use your Azure SQL database when it runs in Azure

A webes projekt és a feldolgozói szerepkör is saját adatbázis-kapcsolati sztringgel rendelkezik, és mindkettőnek az Azure SQL-adatbázisra kell mutatnia az alkalmazás Azure-ban való futásakor.The web project and the worker role project each has its own database connection string, and each needs to point to the Azure SQL database when the app runs in Azure.

A webes szerepkör esetében Web.config transzformálása, a feldolgozói szerepkör esetében pedig felhőszolgáltatás környezeti beállítást kell alkalmaznia.You'll use a Web.config transform for the web role and a cloud service environment setting for the worker role.

Megjegyzés

Ebben és a következő szakaszban a hitelesítő adatokat projektfájlokban fogja tárolni.In this section and the next section, you store credentials in project files. Ne tároljon bizalmas adatokat nyilvános forráskódú adattárakban.Don't store sensitive data in public source code repositories.

  1. A ContosoAdsWeb projektben nyissa meg a Web.Release.config átalakítófájlt az alkalmazás Web.config fájljához, törölje a <connectionStrings> elemet tartalmazó megjegyzésblokkot, és illessze be a helyére az alábbi kódot.In the ContosoAdsWeb project, open the Web.Release.config transform file for the application Web.config file, delete the comment block that contains a <connectionStrings> element, and paste the following code in its place.

    <connectionStrings>
        <add name="ContosoAdsContext" connectionString="{connectionstring}"
        providerName="System.Data.SqlClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
    

    Hagyja megnyitva a fájlt a szerkesztéshez.Leave the file open for editing.

  2. Az Azure Portalon kattintson a bal oldali ablaktáblában található SQL-adatbázisok elemre, kattintson az oktatóanyaghoz létrehozott adatbázisra, majd kattintson a Kapcsolati sztringek megjelenítése elemre.In the Azure portal, click SQL Databases in the left pane, click the database you created for this tutorial, and then click Show connection strings.

    Kapcsolati sztringek megjelenítése

    A portál megjeleníti a kapcsolati sztringekat helyőrzővel helyettesített jelszóval.The portal displays connection strings, with a placeholder for the password.

    Kapcsolati sztringek

  3. A Web.Release.config átalakítófájlban törölje a {connectionstring} elemet, és illessze be a helyére az Azure Portalról származó ADO.NET kapcsolati sztringet.In the Web.Release.config transform file, delete {connectionstring} and paste in its place the ADO.NET connection string from the Azure portal.

  4. A Web.Release.config átalakítófájlba beillesztett kapcsolati sztringben helyettesítse a {your_password_here} elemet az új SQL-adatbázis számára létrehozott jelszóval.In the connection string that you pasted into the Web.Release.config transform file, replace {your_password_here} with the password you created for the new SQL database.

  5. Mentse a fájlt.Save the file.

  6. Jelölje ki és másolja a kapcsolati sztringet (az idézőjelek nélkül) a feldolgozóiszerepkör-projekt konfigurálásának alábbi lépéseiben való használatra.Select and copy the connection string (without the surrounding quotation marks) for use in the following steps for configuring the worker role project.

  7. A Megoldáskezelőben a felhőszolgáltatás-projekt Szerepkörök területén kattintson a jobb gombbal a ContosoAdsWorker, majd a Tulajdonságok elemre.In Solution Explorer, under Roles in the cloud service project, right-click ContosoAdsWorker and then click Properties.

    Szerepkör tulajdonságai

  8. Kattintson a Beállítások fülre.Click the Settings tab.

  9. Módosítsa a Szolgáltatás konfigurációja beállítását a következőre: Felhő.Change Service Configuration to Cloud.

  10. Jelölje ki a ContosoAdsDbConnectionString beállítás Érték mezőjét, majd illessze be az oktatóanyag előző szakaszából másolt kapcsolati sztringet.Select the Value field for the ContosoAdsDbConnectionString setting, and then paste the connection string that you copied from the previous section of the tutorial.

    A feldolgozói szerepkör adatbázis-kapcsolati sztringje

  11. Mentse a módosításokat.Save your changes.

A megoldás konfigurálása az Azure-tárfiók használatára az Azure-ban való futás soránConfigure the solution to use your Azure storage account when it runs in Azure

Az Azure-tárfiók kapcsolati sztringjeinek tárolása a webes- és a feldolgozóiszerepkör-projektek esetében egyaránt környezeti beállításokban történik a felhőszolgáltatás-projektben.Azure storage account connection strings for both the web role project and the worker role project are stored in environment settings in the cloud service project. Az egyes projektek esetén külön beállításokat kell alkalmazni, ha az alkalmazás helyileg vagy a felhőben fut.For each project, there is a separate set of settings to be used when the application runs locally and when it runs in the cloud. A felhőkörnyezet beállításait a webes és a feldolgozóiszerepkör-projektek esetében egyaránt frissíteni fogja.You'll update the cloud environment settings for both web and worker role projects.

  1. A Megoldáskezelőben a ContosoAdsCloudService projekt Szerepkörök területén kattintson a jobb gombbal a ContosoAdsWeb elemre, majd kattintson a Tulajdonságok lehetőségre.In Solution Explorer, right-click ContosoAdsWeb under Roles in the ContosoAdsCloudService project, and then click Properties.

    Szerepkör tulajdonságai

  2. Kattintson a Beállítások fülre. A Szolgáltatás konfigurációja legördülő mezőben válassza a Felhő elemet.Click the Settings tab. In the Service Configuration drop-down box, choose Cloud.

    Felhő konfigurálása

  3. Jelölje ki a StorageConnectionString bejegyzést, és megjelenik egy három pontot ( ... ) ábrázoló gomb a sor jobb oldali végén.Select the StorageConnectionString entry, and you'll see an ellipsis (...) button at the right end of the line. Kattintson a három pontot ábrázoló gombra a Create Storage Account Connection String (Tárfiók kapcsolati sztringjének létrehozása) párbeszédpanel megnyitásához.Click the ellipsis button to open the Create Storage Account Connection String dialog box.

    A Kapcsolati sztring létrehozása mező megnyitása

  4. A Create Storage Connection String (Tárfiók kapcsolati sztringjének létrehozása) párbeszédpanelen kattintson a Your subscription (Saját előfizetés) elemre, válassza a korábban létrehozott tárfiókot, majd kattintson az OK gombra.In the Create Storage Connection String dialog box, click Your subscription, choose the storage account that you created earlier, and then click OK. Ha még nincs bejelentkezve, a rendszer az Azure-fiókja hitelesítő adatait kéri.If you're not already logged in, you'll be prompted for your Azure account credentials.

    Tárfiók kapcsolati sztringjének létrehozása

  5. Mentse a módosításokat.Save your changes.

  6. A Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString kapcsolati sztring beállításához kövesse ugyanazt az eljárást, mint a StorageConnectionString kapcsolati sztring esetében.Follow the same procedure that you used for the StorageConnectionString connection string to set the Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString connection string.

    Ez a kapcsolati sztring naplózásra használható.This connection string is used for logging.

  7. A ContosoAdsWorker szerepkör mindkét kapcsolati sztringjének beállításához kövesse ugyanazt az eljárást, mint a ContosoAdsWeb szerepkör esetében.Follow the same procedure that you used for the ContosoAdsWeb role to set both connection strings for the ContosoAdsWorker role. Ne felejtse el a Szolgáltatás konfigurációja beállítását a következőre módosítani: Felhő.Don't forget to set Service Configuration to Cloud.

A Visual Studio felhasználói felületén keresztül konfigurált szerepkörnyezeti beállítások a ContosoAdsCloudService projekt alábbi fájljaiban lesznek tárolva:The role environment settings that you have configured using the Visual Studio UI are stored in the following files in the ContosoAdsCloudService project:

  • ServiceDefinition.csdef – Meghatározza a beállításneveket.ServiceDefinition.csdef - Defines the setting names.
  • ServiceConfiguration.Cloud.cscfg – Értékeket biztosít az alkalmazás felhőben való futtatásához.ServiceConfiguration.Cloud.cscfg - Provides values for when the app runs in the cloud.
  • ServiceConfiguration.Local.cscfg – Értékeket biztosít az alkalmazás helyi futtatásához.ServiceConfiguration.Local.cscfg - Provides values for when the app runs locally.

A ServiceDefinition.csdef például az alábbi definíciókat tartalmazza:For example, the ServiceDefinition.csdef includes the following definitions:

<ConfigurationSettings>
    <Setting name="StorageConnectionString" />
    <Setting name="ContosoAdsDbConnectionString" />
</ConfigurationSettings>

A ServiceConfiguration.Cloud.cscfg fájl pedig azokat az értékeket tartalmazza, amelyeket a beállításokhoz adott meg a Visual Studióban.And the ServiceConfiguration.Cloud.cscfg file includes the values you entered for those settings in Visual Studio.

<Role name="ContosoAdsWorker">
    <Instances count="1" />
    <ConfigurationSettings>
        <Setting name="StorageConnectionString" value="{yourconnectionstring}" />
        <Setting name="ContosoAdsDbConnectionString" value="{yourconnectionstring}" />
        <!-- other settings not shown -->

    </ConfigurationSettings>
    <!-- other settings not shown -->

</Role>

Az <Instances> beállítás megadja azon virtuális gépek számát, amelyeken az Azure a feldolgozói szerepkör kódját fogja futtatni.The <Instances> setting specifies the number of virtual machines that Azure will run the worker role code on. A További lépések szakasz hivatkozásokat tartalmaz a felhőszolgáltatás kiterjesztésére vonatkozó további információkra.The Next steps section includes links to more information about scaling out a cloud service,

A projekt központi telepítése az Azure-banDeploy the project to Azure

  1. A Megoldáskezelőben kattintson a jobb gombbal a ContosoAdsCloudService felhőprojektre, majd válassza a Közzététel lehetőséget.In Solution Explorer, right-click the ContosoAdsCloudService cloud project and then select Publish.

    Közzététel menü

  2. Az Publish Azure Application (Azure-alkalmazás közzététele) varázsló Bejelentkezés lépésében kattintson a Tovább gombra.In the Sign in step of the Publish Azure Application wizard, click Next.

    Bejelentkezés lépés

  3. A varázsló Beállítások lépésében kattintson a Tovább gombra.In the Settings step of the wizard, click Next.

    Beállítások lépés

    A Speciális lapon szereplő alapértelmezett beállítások megfelelnek a jelen oktatóanyag céljainak.The default settings in the Advanced tab are fine for this tutorial. A Speciális lappal kapcsolatos további információkért lásd: Publish Azure Application Wizard (Azure-alkalmazás közzététele varázsló).For information about the advanced tab, see Publish Azure Application Wizard.

  4. Az Összegzés lépésben kattintson a Közzététel lehetőségre.In the Summary step, click Publish.

    Összegzés lépés

    Megnyílik az Azure tevékenységnapló ablak a Visual Studióban.The Azure Activity Log window opens in Visual Studio.

  5. Kattintson a jobbra mutató nyíl ikonra a telepítés részleteinek kibontásához.Click the right arrow icon to expand the deployment details.

    A telepítés akár 5 percet vagy több időt is igénybe vehet.The deployment can take up to 5 minutes or more to complete.

    Azure tevékenységnapló ablak

  6. Amikor a telepítés befejeződött, kattintson a Webalkalmazás URL-címe elemre az alkalmazás elindításához.When the deployment status is complete, click the Web app URL to start the application.

  7. Most már hirdetések létrehozásával, megtekintésével és szerkesztésével tesztelheti az alkalmazást, ugyanúgy, mint amikor helyileg futtatta.You can now test the app by creating, viewing, and editing some ads, as you did when you ran the application locally.

Megjegyzés

Ha befejezte a tesztelést, törölje vagy állítsa le a felhőszolgáltatást.When you're finished testing, delete or stop the cloud service. Akkor is keletkezhetnek költségek, ha nem használja a felhőszolgáltatást, mivel virtuálisgép-erőforrások vannak lefoglalva számára.Even if you're not using the cloud service, it's accruing charges because virtual machine resources are reserved for it. Ha hagyja, hogy továbbra is fusson, bárki, aki rátalál az URL-címére, létrehozhat és megtekinthet hirdetéseket.And if you leave it running, anyone who finds your URL can create and view ads. Az Azure Portalon lépjen a felhőszolgáltatás Áttekintés lapjára, és kattintson a lap tetején található Törlés gombra.In the Azure portal, go to the Overview tab for your cloud service, and then click the Delete button at the top of the page. Ha csak ideiglenesen szeretné megakadályozni, hogy mások hozzáférjenek a webhelyhez, kattintson a Leállítás gombra.If you just want to temporarily prevent others from accessing the site, click Stop instead. Ebben az esetben továbbra is keletkeznek költségek.In that case, charges will continue to accrue. Hasonló eljárással törölheti az SQL-adatbázist és a tárfiókot, ha már nincs szüksége rájuk.You can follow a similar procedure to delete the SQL database and storage account when you no longer need them.

Teljesen új alkalmazás létrehozásaCreate the application from scratch

Ha még nem töltötte le a kész alkalmazást, most tegye meg.If you haven't already downloaded the completed application, do that now. Fájlokat fog átmásolni a letöltött projektből az új projektbe.You'll copy files from the downloaded project into the new project.

A Contoso Ads alkalmazás létrehozása az alábbi lépésekből áll:Creating the Contoso Ads application involves the following steps:

  • Hozzon létre egy Visual Studio felhőszolgáltatás-megoldást.Create a cloud service Visual Studio solution.
  • Frissítse és adja hozzá a NuGet-csomagokat.Update and add NuGet packages.
  • Állítsa be a projekt hivatkozásait.Set project references.
  • Konfigurálja a kapcsolati sztringekat.Configure connection strings.
  • Adja hozzá a kódfájlokat.Add code files.

A megoldás létrehozása után áttekinti a felhőszolgáltatás-projektekre nézve egyedi kódot, valamint az Azure-blobokat és üzenetsorokat.After the solution is created, you'll review the code that is unique to cloud service projects and Azure blobs and queues.

Visual Studio felhőszolgáltatás-megoldás létrehozásaCreate a cloud service Visual Studio solution

  1. A Visual Studio Fájl menüjében válassza az Új projekt lehetőséget.In Visual Studio, choose New Project from the File menu.

  2. Az Új projekt párbeszédpanel bal oldali ablaktáblájában bontsa ki a Visual C# elemet, és válassza ki a Felhő sablonokat, majd az Azure Cloud Service sablont.In the left pane of the New Project dialog box, expand Visual C# and choose Cloud templates, and then choose the Azure Cloud Service template.

  3. Adja a ContosoAdsCloudService nevet a projektnek és a megoldásnak, majd kattintson az OK gombra.Name the project and solution ContosoAdsCloudService, and then click OK.

    Új projekt

  4. Az Új Azure Cloud Service párbeszédpanelen adjon hozzá egy webes és egy feldolgozói szerepkört.In the New Azure Cloud Service dialog box, add a web role and a worker role. A webes szerepkörnek adja a ContosoAdsWeb, a feldolgozói szerepkörnek pedig a ContosoAdsWorker nevet.Name the web role ContosoAdsWeb, and name the worker role ContosoAdsWorker. (A szerepkörök alapértelmezett nevének módosításához használja a jobb oldali ablaktáblában található ceruza ikont.)(Use the pencil icon in the right-hand pane to change the default names of the roles.)

    Új Cloud Service-projekt

  5. Amikor megjelenik a webes szerepkör Új ASP.NET-projekt párbeszédpanele, válassza az MVC-sablont, majd kattintson a Hitelesítés módosítása elemre.When you see the New ASP.NET Project dialog box for the web role, choose the MVC template, and then click Change Authentication.

    Hitelesítés módosítása

  6. A Change Authentication (Hitelesítés módosítása) párbeszédpanelen kattintson a No Authentication (Nincs hitelesítés) elemre, majd az OK gombra.In the Change Authentication dialog box, choose No Authentication, and then click OK.

    Nincs hitelesítés

  7. A New ASP.NET Project (Új ASP.NET-projekt) párbeszédpanelen kattintson az OK gombra.In the New ASP.NET Project dialog, click OK.

  8. A Megoldáskezelőben kattintson a jobb gombbal a megoldásra (ne a projektek egyikére), és válassza az Add - New Project (Hozzáadás – Új projekt) lehetőséget.In Solution Explorer, right-click the solution (not one of the projects), and choose Add - New Project.

  9. Az Add New Project (Új projekt hozzáadása) párbeszédpanelen válassza a bal oldali ablaktáblában lévő Visual C# elem alatt található Windows lehetőséget, majd kattintson az Class Library (Osztálytár) sablonra.In the Add New Project dialog box, choose Windows under Visual C# in the left pane, and then click the Class Library template.

  10. Adja a ContosoAdsCommon nevet a projektnek, majd kattintson az OK gombra.Name the project ContosoAdsCommon, and then click OK.

    A webes és a feldolgozói szerepkörből is hivatkoznia kell az Entity Framework-környezetre és az adatmodellre.You need to reference the Entity Framework context and the data model from both web and worker role projects. Alternatív megoldásként definiálhatja az EF-hez kapcsolódó osztályokat a webesszerepkör-projektben, majd hivatkozhat erre a projektre a feldolgozói szerepkörből.As an alternative, you could define the EF-related classes in the web role project and reference that project from the worker role project. Az alternatív megoldás részeként azonban a feldolgozói szerepkör projektje egy olyan webes szerelvényre is hivatkozni fog, amelyre nincs szüksége.But in the alternative approach, your worker role project would have a reference to web assemblies that it doesn't need.

NuGet-csomagok frissítése és hozzáadásaUpdate and add NuGet packages

  1. Nyissa meg a megoldáshoz tartozó Manage NuGet Packages (NuGet-csomagok kezelése) párbeszédpanelt.Open the Manage NuGet Packages dialog box for the solution.

  2. Az ablak tetején válassza az Updates (Frissítések) elemet.At the top of the window, select Updates.

  3. Keresse meg a WindowsAzure.Storage csomagot, és ha szerepel a listában, jelölje ki, majd válassza ki, hogy melyik webes és feldolgozói projektben kívánja frissíteni, és végül kattintson az Update (Frissítés) gombra.Look for the WindowsAzure.Storage package, and if it's in the list, select it and select the web and worker projects to update it in, and then click Update.

    A Storage ügyféloldali kódtár gyakrabban frissül, mint a Visual Studio projektsablonjai, így gyakran tapasztalhatja, hogy egy újonnan létrehozott projektben lévő verziót frissíteni kell.The storage client library is updated more frequently than Visual Studio project templates, so you'll often find that the version in a newly-created project needs to be updated.

  4. Az ablak tetején válassza a Browse (Tallózás) elemet.At the top of the window, select Browse.

  5. Keresse meg az EntityFramework NuGet-csomagot, majd telepítse mind a három projektben.Find the EntityFramework NuGet package, and install it in all three projects.

  6. Keresse meg a Microsoft.WindowsAzure.ConfigurationManager NuGet-csomagot, majd telepítse a feldolgozói szerepkör projektben.Find the Microsoft.WindowsAzure.ConfigurationManager NuGet package, and install it in the worker role project.

A projekt hivatkozásainak beállításaSet project references

  1. A ContosoAdsWeb projektben állítson be egy hivatkozást a ContosoAdsCommon projektre.In the ContosoAdsWeb project, set a reference to the ContosoAdsCommon project. Kattintson a jobb gombbal a ContosoAdsWeb projektre, majd kattintson a References - Add References (Hivatkozások, Hivatkozások hozzáadása) elemre.Right-click the ContosoAdsWeb project, and then click References - Add References. A Hivatkozáskezelő párbeszédpanelen válassza a bal oldali ablaktáblában lévő Megoldás – Projektek, majd a ContosoAdsCommon lehetőséget, és végül kattintson az OK gombra.In the Reference Manager dialog box, select Solution – Projects in the left pane, select ContosoAdsCommon, and then click OK.

  2. A ContosoAdsWorker projektben állítson be egy hivatkozást a ContosoAdsCommon projektre.In the ContosoAdsWorker project, set a reference to the ContosoAdsCommon project.

    A ContosoAdsCommon tartalmazza az Entity Framework-adatmodellt és a környezeti osztályt, amelyet az elő- és a háttéralkalmazás egyaránt használ.ContosoAdsCommon will contain the Entity Framework data model and context class, which will be used by both the front-end and back-end.

  3. A ContosoAdsWorker projektben állítson be egy hivatkozást a következőre: System.Drawing.In the ContosoAdsWorker project, set a reference to System.Drawing.

    Ezt a szerelvényt a háttéralkalmazás használja a képek miniatűrökké való átalakításához.This assembly is used by the back-end to convert images to thumbnails.

Kapcsolati sztringek konfigurálásaConfigure connection strings

Ebben a szakaszban Azure Storage- és SQL-kapcsolati sztringeket fog konfigurálni helyi tesztelés céljából.In this section, you configure Azure Storage and SQL connection strings for testing locally. Az oktatóanyag korábbi telepítési utasításai ismertetik a kapcsolati sztringek beállításának módját, amikor az alkalmazás a felhőben fut.The deployment instructions earlier in the tutorial explain how to set up the connection strings for when the app runs in the cloud.

  1. A ContosoAdsWeb projektben nyissa meg az alkalmazás Web.config fájlját, és illessze be a következő connectionStrings elemet a configSections elem után.In the ContosoAdsWeb project, open the application Web.config file, and insert the following connectionStrings element after the configSections element.

    <connectionStrings>
        <add name="ContosoAdsContext" connectionString="Data Source=(localdb)\v11.0; Initial Catalog=ContosoAds; Integrated Security=True; MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
    </connectionStrings>
    

    A Visual Studio 2015 vagy újabb használata esetén cserélje le a „v11.0” elemet az „MSSQLLocalDB” elemre.If you're using Visual Studio 2015 or higher, replace "v11.0" with "MSSQLLocalDB".

  2. Mentse a módosításokat.Save your changes.

  3. A ContosoAdsCloudService projektben a Szerepkörök területen kattintson a jobb gombbal a ContosoAdsWeb elemre, majd kattintson a Tulajdonságok elemre.In the ContosoAdsCloudService project, right-click ContosoAdsWeb under Roles, and then click Properties.

    Szerepkör tulajdonságai

  4. A ContosoAdsWeb [szerepkör] tulajdonságok ablakában kattintson a Beállítások fülre, majd a beállítás hozzáadásaelemre.In the ContosoAdsWeb [Role] properties window, click the Settings tab, and then click Add Setting.

    A Service Configuration (Szolgáltatáskonfiguráció) All Configurations (Minden konfiguráció) értékét ne módosítsa.Leave Service Configuration set to All Configurations.

  5. Adjon hozzá egy StorageConnectionString névvel ellátott beállítást.Add a setting named StorageConnectionString. A Típus beállítása legyen ConnectionString, az Érték beállítása pedig UseDevelopmentStorage=true.Set Type to ConnectionString, and set Value to UseDevelopmentStorage=true.

    Új kapcsolati sztring

  6. Mentse a módosításokat.Save your changes.

  7. Kövesse ugyanezt az eljárást egy tárolási kapcsolati sztring hozzáadásához a ContosoAdsWeb szerepkör tulajdonságaihoz.Follow the same procedure to add a storage connection string in the ContosoAdsWorker role properties.

  8. A ContosoAdsWorker [Szerepkör] tulajdonságai ablakban maradva adjon hozzá egy másik kapcsolati sztringet:Still in the ContosoAdsWorker [Role] properties window, add another connection string:

    • Név: ContosoAdsDbConnectionStringName: ContosoAdsDbConnectionString

    • Típus: SztringType: String

    • Érték: Illessze be ugyanazt a kapcsolati karakterláncot, amelyet a webes szerepkör projekthez használt.Value: Paste the same connection string you used for the web role project. (Az alábbi példa a Visual Studio 2013 kiadásra vonatkozik.(The following example is for Visual Studio 2013. (Ne feledje módosítani az Adatforrást, ha ezt a példát a Visual Studio 2015 vagy újabb kiadás használata mellett követi.)Don't forget to change the Data Source if you copy this example and you're using Visual Studio 2015 or higher.)

      Data Source=(localdb)\v11.0; Initial Catalog=ContosoAds; Integrated Security=True; MultipleActiveResultSets=True;
      

Kódfájlok hozzáadásaAdd code files

Ebben a szakaszban kódfájlokat fog másolni a letöltött megoldásból az új megoldásba.In this section, you copy code files from the downloaded solution into the new solution. A következő szakaszok bemutatják és ismertetik a kód legfontosabb részeit.The following sections will show and explain key parts of this code.

Fájlok hozzáadásához egy projekthez vagy mappához kattintson a jobb gombbal a projektre vagy a mappára, majd kattintson a Hozzáadás - Létező elem lehetőségre.To add files to a project or a folder, right-click the project or folder and click Add - Existing Item. Jelölje ki a kívánt fájlokat, majd kattintson az Add (Hozzáadás) gombra.Select the files you want and then click Add. Ha a rendszer rákérdez, hogy lecseréli-e a meglévő fájlokat, kattintson a Yes (Igen) gombra.If asked whether you want to replace existing files, click Yes.

  1. A ContosoAdsCommon projektben törölje a Class1.cs fájlt, és a helyére illessze be az Ad.cs és a ContosoAdscontext.cs fájlt a letöltött projektből.In the ContosoAdsCommon project, delete the Class1.cs file and add in its place the Ad.cs and ContosoAdscontext.cs files from the downloaded project.

  2. A ContosoAdsWeb projektben adja hozzá az alábbi fájlokat a letöltött projektből.In the ContosoAdsWeb project, add the following files from the downloaded project.

    • Global.asax.cs.Global.asax.cs.
    • A Views\Shared mappában: Layout. cshtml. _In the Views\Shared folder: _Layout.cshtml.
    • A Views\Home mappában: Index. cshtml.In the Views\Home folder: Index.cshtml.
    • A vezérlők mappában: AdController.cs.In the Controllers folder: AdController.cs.
    • AViews\Ad mappában (először hozza létre a mappát): öt .cshtml fájl.In the Views\Ad folder (create the folder first): five .cshtml files.
  3. A ContosoAdsWorker projektben adja hozzá a WorkerRole.cs fájlt a letöltött projektből.In the ContosoAdsWorker project, add WorkerRole.cs from the downloaded project.

Most már létrehozhatja és futtathatja az alkalmazást az oktatóanyag korábbi utasításai szerint, amely a helyi adatbázist és a Storage Emulator erőforrásait fogja használni.You can now build and run the application as instructed earlier in the tutorial, and the app will use local database and storage emulator resources.

Az alábbi szakaszok az Azure-környezetek, -blobok és -üzenetsorok használatával kapcsolatos kódot ismerteti.The following sections explain the code related to working with the Azure environment, blobs, and queues. A jelen oktatóanyag nem tartalmazza az MVC-vezérlők és nézetek szerkezet használatával történő létrehozásának vagy az SQL Server-adatbázisokkal együttműködő Entity Framework-kód megírásának módját, illetve az ASP.NET 4.5-ben való aszinkron programozás alapjait.This tutorial does not explain how to create MVC controllers and views using scaffolding, how to write Entity Framework code that works with SQL Server databases, or the basics of asynchronous programming in ASP.NET 4.5. Ezen témakörökről az alábbi forrásanyagokban talál információt:For information about these topics, see the following resources:

ContosoAdsCommon – Ad.csContosoAdsCommon - Ad.cs

Az Ad.cs fájl megad egy felsorolást a kategóriákhoz és egy POCO entitásosztályt a hirdetés információihoz.The Ad.cs file defines an enum for ad categories and a POCO entity class for ad information.

public enum Category
{
    Cars,
    [Display(Name="Real Estate")]
    RealEstate,
    [Display(Name = "Free Stuff")]
    FreeStuff
}

public class Ad
{
    public int AdId { get; set; }

    [StringLength(100)]
    public string Title { get; set; }

    public int Price { get; set; }

    [StringLength(1000)]
    [DataType(DataType.MultilineText)]
    public string Description { get; set; }

    [StringLength(1000)]
    [DisplayName("Full-size Image")]
    public string ImageURL { get; set; }

    [StringLength(1000)]
    [DisplayName("Thumbnail")]
    public string ThumbnailURL { get; set; }

    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    public DateTime PostedDate { get; set; }

    public Category? Category { get; set; }
    [StringLength(12)]
    public string Phone { get; set; }
}

ContosoAdsCommon – ContosoAdsContext.csContosoAdsCommon - ContosoAdsContext.cs

A ContosoAdsContext osztály megadja, hogy az Ad osztály egy DbSet gyűjteményben lesz használva, amelyet az Entity Framework egy SQL-adatbázisban tárol.The ContosoAdsContext class specifies that the Ad class is used in a DbSet collection, which Entity Framework will store in a SQL database.

public class ContosoAdsContext : DbContext
{
    public ContosoAdsContext() : base("name=ContosoAdsContext")
    {
    }
    public ContosoAdsContext(string connString)
        : base(connString)
    {
    }
    public System.Data.Entity.DbSet<Ad> Ads { get; set; }
}

Az osztály két konstruktorral rendelkezik.The class has two constructors. Az elsőt a webes projekt használja, és a Web.config fájlban tárolt kapcsolati sztring nevét adja meg.The first of them is used by the web project, and specifies the name of a connection string that is stored in the Web.config file. A második konstruktorral adhatja meg a feldolgozói szerepkör projektje által használt tényleges kapcsolati sztringet, mivel a projektben nem található Web.config fájl.The second constructor enables you to pass in the actual connection string used by the worker role project, since it doesn't have a Web.config file. Korábban már látta a kapcsolati sztring tárolásának helyét, a későbbiekben pedig láthatja, hogyan kérdezi le a kód a kapcsolati sztringet, amikor elindítja a DbContext osztályt.You saw earlier where this connection string was stored, and you'll see later how the code retrieves the connection string when it instantiates the DbContext class.

ContosoAdsWeb – Global.asax.csContosoAdsWeb - Global.asax.cs

Az Application_Start metódusból meghívott kód létrehoz egy képek blobtárolót és egy képek üzenetsort, amennyiben még nem léteznek.Code that is called from the Application_Start method creates an images blob container and an images queue if they don't already exist. Ez biztosítja, hogy valahányszor új tárfiókot kezd használni, vagy egy új számítógépen használja a Storage Emulatort, a szükséges blobtároló és üzenetsor automatikusan létrejöjjön.This ensures that whenever you start using a new storage account, or start using the storage emulator on a new computer, the required blob container and queue will be created automatically.

A kód a .cscfg-fájlból származó tárolási kapcsolati sztring használatával fér hozzá a tárfiókhoz.The code gets access to the storage account by using the storage connection string from the .cscfg file.

var storageAccount = CloudStorageAccount.Parse
    (RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString"));

Ezután hivatkozást kap a képek blobtárolóhoz, létrehozza a tárolót, ha az még nem létezik, és beállítja a hozzáférési engedélyeket az új tárolóhoz.Then it gets a reference to the images blob container, creates the container if it doesn't already exist, and sets access permissions on the new container. Alapértelmezés szerint az új tárolók csak tárfiók-hitelesítő adatokkal rendelkező ügyfeleknek engedélyezik a blobokhoz való hozzáférést.By default, new containers only allow clients with storage account credentials to access blobs. A webhely szempontjából szükséges, hogy a blobok nyilvánosak legyenek, hogy képeket jeleníthessen meg a képblobokra mutató URL-címek használatával.The website needs the blobs to be public so that it can display images using URLs that point to the image blobs.

var blobClient = storageAccount.CreateCloudBlobClient();
var imagesBlobContainer = blobClient.GetContainerReference("images");
if (imagesBlobContainer.CreateIfNotExists())
{
    imagesBlobContainer.SetPermissions(
        new BlobContainerPermissions
        {
            PublicAccess =BlobContainerPublicAccessType.Blob
        });
}

Egy hasonló kód a képek üzenetsor hivatkozását szerzi be, majd létrehoz egy új üzenetsort.Similar code gets a reference to the images queue and creates a new queue. Ebben az esetben nincs szükség az engedélyek módosítására.In this case, no permissions change is needed.

CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
var imagesQueue = queueClient.GetQueueReference("images");
imagesQueue.CreateIfNotExists();

ContosoAdsWeb – _Layout.cshtmlContosoAdsWeb - _Layout.cshtml

A _Layout.cshtml fájl beállítja az alkalmazás nevét a fejlécben és a láblécben, és létrehoz egy „Ads” menübejegyzést.The _Layout.cshtml file sets the app name in the header and footer, and creates an "Ads" menu entry.

ContosoAdsWeb – Views\Home\Index.cshtmlContosoAdsWeb - Views\Home\Index.cshtml

A Views\Home\Index.cshtml fájl kategóriahivatkozásokat jelenít meg a kezdőlapon.The Views\Home\Index.cshtml file displays category links on the home page. A hivatkozások átadják a Category felsorolás egy lekérdezési karakterlánc változóban lévő egész számú értékét az Ads indexlapnak.The links pass the integer value of the Category enum in a querystring variable to the Ads Index page.

<li>@Html.ActionLink("Cars", "Index", "Ad", new { category = (int)Category.Cars }, null)</li>
<li>@Html.ActionLink("Real estate", "Index", "Ad", new { category = (int)Category.RealEstate }, null)</li>
<li>@Html.ActionLink("Free stuff", "Index", "Ad", new { category = (int)Category.FreeStuff }, null)</li>
<li>@Html.ActionLink("All", "Index", "Ad", null, null)</li>

ContosoAdsWeb – AdController.csContosoAdsWeb - AdController.cs

Az AdController.cs fájlban lévő konstruktor meghívja az InitializeStorage metódust az Azure Storage ügyfélkódtár objektumainak létrehozásához, amelyek egy API-t biztosítanak a blobok és az üzenetsorok használatához.In the AdController.cs file, the constructor calls the InitializeStorage method to create Azure Storage Client Library objects that provide an API for working with blobs and queues.

Ezután a kód lekér egy hivatkozást a képek blobtárolóra, ahogy azt korábban a Global.asax.cs esetében is láthatta.Then the code gets a reference to the images blob container as you saw earlier in Global.asax.cs. Mindeközben beállít egy webalkalmazásokhoz használható alapértelmezett újrapróbálkozási házirendet.While doing that it sets a default retry policy appropriate for a web app. Az alapértelmezett exponenciális leállítási újrapróbálkozási házirend egy átmeneti hiba miatti ismételt próbálkozás esetén egy percnél hosszabb időre állíthatja le a webalkalmazást.The default exponential backoff retry policy could hang the web app for longer than a minute on repeated retries for a transient fault. Az itt megadott újrapróbálkozási szabályzat minden próbálkozás után három másodpercet vár, legfeljebb három alkalommal.The retry policy specified here waits three seconds after each try for up to three tries.

var blobClient = storageAccount.CreateCloudBlobClient();
blobClient.DefaultRequestOptions.RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(3), 3);
imagesBlobContainer = blobClient.GetContainerReference("images");

Egy hasonló kód a képek üzenetsorra kér le hivatkozást.Similar code gets a reference to the images queue.

CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
queueClient.DefaultRequestOptions.RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(3), 3);
imagesQueue = queueClient.GetQueueReference("images");

A vezérlőkód nagy része jellemzően egy DbContext osztályt használó Entity Framework-adatmodellel történő használatra való.Most of the controller code is typical for working with an Entity Framework data model using a DbContext class. Kivétel ez alól a HttpPost Create metódus, amely feltölti és blobtárolóba menti a fájlokat.An exception is the HttpPost Create method, which uploads a file and saves it in blob storage. A modellkötő HttpPostedFileBase objektumot biztosít a metódus számára.The model binder provides an HttpPostedFileBase object to the method.

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create(
    [Bind(Include = "Title,Price,Description,Category,Phone")] Ad ad,
    HttpPostedFileBase imageFile)

Ha a felhasználó feltöltésre jelöl ki egy fájlt, a kód feltölti és egy blobba menti azt, majd frissíti a Hirdetés adatbázisrekordot a blobra mutató URL-címmel.If the user selected a file to upload, the code uploads the file, saves it in a blob, and updates the Ad database record with a URL that points to the blob.

if (imageFile != null && imageFile.ContentLength != 0)
{
    blob = await UploadAndSaveBlobAsync(imageFile);
    ad.ImageURL = blob.Uri.ToString();
}

A feltöltést végző kód az UploadAndSaveBlobAsync metódusban található.The code that does the upload is in the UploadAndSaveBlobAsync method. Létrehoz egy GUID nevet a blob számára, feltölti és menti a fájlt, majd visszaad egy hivatkozást a mentett blobra.It creates a GUID name for the blob, uploads and saves the file, and returns a reference to the saved blob.

private async Task<CloudBlockBlob> UploadAndSaveBlobAsync(HttpPostedFileBase imageFile)
{
    string blobName = Guid.NewGuid().ToString() + Path.GetExtension(imageFile.FileName);
    CloudBlockBlob imageBlob = imagesBlobContainer.GetBlockBlobReference(blobName);
    using (var fileStream = imageFile.InputStream)
    {
        await imageBlob.UploadFromStreamAsync(fileStream);
    }
    return imageBlob;
}

Miután a HttpPost Create metódus feltölt egy blobot és frissíti az adatbázist, létrehoz egy üzenetsor-üzenetet, amely tájékoztatja a háttérfolyamatot arról, hogy egy kép készen áll a miniatűrré való átalakításra.After the HttpPost Create method uploads a blob and updates the database, it creates a queue message to inform that back-end process that an image is ready for conversion to a thumbnail.

string queueMessageString = ad.AdId.ToString();
var queueMessage = new CloudQueueMessage(queueMessageString);
await queue.AddMessageAsync(queueMessage);

A HttpPost Edit metódus kódja is hasonló, azzal a különbséggel, hogy ha a felhasználó egy új képfájlt jelöl ki, minden létező blobot törölni kell.The code for the HttpPost Edit method is similar except that if the user selects a new image file any blobs that already exist must be deleted.

if (imageFile != null && imageFile.ContentLength != 0)
{
    await DeleteAdBlobsAsync(ad);
    imageBlob = await UploadAndSaveBlobAsync(imageFile);
    ad.ImageURL = imageBlob.Uri.ToString();
}

A következő példa bemutatja a kódot, amely a hirdetés törlésekor törli a blobokat.The next example shows the code that deletes blobs when you delete an ad.

private async Task DeleteAdBlobsAsync(Ad ad)
{
    if (!string.IsNullOrWhiteSpace(ad.ImageURL))
    {
        Uri blobUri = new Uri(ad.ImageURL);
        await DeleteAdBlobAsync(blobUri);
    }
    if (!string.IsNullOrWhiteSpace(ad.ThumbnailURL))
    {
        Uri blobUri = new Uri(ad.ThumbnailURL);
        await DeleteAdBlobAsync(blobUri);
    }
}
private static async Task DeleteAdBlobAsync(Uri blobUri)
{
    string blobName = blobUri.Segments[blobUri.Segments.Length - 1];
    CloudBlockBlob blobToDelete = imagesBlobContainer.GetBlockBlobReference(blobName);
    await blobToDelete.DeleteAsync();
}

ContosoAdsWeb – Views\Ad\Index.cshtml és Details.cshtmlContosoAdsWeb - Views\Ad\Index.cshtml and Details.cshtml

Az Index.cshtml fájl a hirdetés többi adatát tartalmazó miniatűrt jelenít meg.The Index.cshtml file displays thumbnails with the other ad data.

<img src="@Html.Raw(item.ThumbnailURL)" />

A Details.cshtml fájl a teljes méretű képet jeleníti meg.The Details.cshtml file displays the full-size image.

<img src="@Html.Raw(Model.ImageURL)" />

ContosoAdsWeb – Views\Ad\Create.cshtml és Edit.cshtmlContosoAdsWeb - Views\Ad\Create.cshtml and Edit.cshtml

A Create.cshtml és az Edit.cshtml fájlok megadják az űrlap kódolását, amely lehetővé teszi a vezérlő számára a HttpPostedFileBase objektum lekérését.The Create.cshtml and Edit.cshtml files specify form encoding that enables the controller to get the HttpPostedFileBase object.

@using (Html.BeginForm("Create", "Ad", FormMethod.Post, new { enctype = "multipart/form-data" }))

Egy <input> elem jelzi a böngészőnek, hogy biztosítson egy fájlkiválasztási párbeszédpanelt.An <input> element tells the browser to provide a file selection dialog.

<input type="file" name="imageFile" accept="image/*" class="form-control fileupload" />

ContosoAdsWorker – WorkerRole.cs – OnStart metódusContosoAdsWorker - WorkerRole.cs - OnStart method

A feldolgozói szerepkör indulásakor az Azure feldolgozóiszerepkör-környezet meghívja a WorkerRole osztályban lévő OnStart metódust, az OnStart metódus befejezésekor pedig a Run metódust.The Azure worker role environment calls the OnStart method in the WorkerRole class when the worker role is getting started, and it calls the Run method when the OnStart method finishes.

Az OnStart metódus lekéri az adatbázis-kapcsolati sztringet a .cscfg-fájlból, és átadja az Entity Framework DbContext osztálynak.The OnStart method gets the database connection string from the .cscfg file and passes it to the Entity Framework DbContext class. Alapértelmezés szerint az SQLClient szolgáltató van használatban, így azt nem kell megadni.The SQLClient provider is used by default, so the provider does not have to be specified.

var dbConnString = CloudConfigurationManager.GetSetting("ContosoAdsDbConnectionString");
db = new ContosoAdsContext(dbConnString);

Ezután a metódus lekér egy hivatkozást a tárfiókra, valamint létrehozza a blobtárolót és az üzenetsort, ha azok még nem léteznek.After that, the method gets a reference to the storage account and creates the blob container and queue if they don't exist. Az ehhez tartozó kód hasonló ahhoz, amelyet a webes szerepkör Application_Start metódusában látott.The code for that is similar to what you already saw in the web role Application_Start method.

ContosoAdsWorker – WorkerRole.cs – Run metódusContosoAdsWorker - WorkerRole.cs - Run method

A Run metódus az OnStart metódus inicializálási feladatának befejezése után lesz meghívva.The Run method is called when the OnStart method finishes its initialization work. A metódus elindít egy végtelen ciklust, amely az üzenetsor új üzeneteit figyeli, és a beérkezésükkor feldolgozza azokat.The method executes an infinite loop that watches for new queue messages and processes them when they arrive.

public override void Run()
{
    CloudQueueMessage msg = null;

    while (true)
    {
        try
        {
            msg = this.imagesQueue.GetMessage();
            if (msg != null)
            {
                ProcessQueueMessage(msg);
            }
            else
            {
                System.Threading.Thread.Sleep(1000);
            }
        }
        catch (StorageException e)
        {
            if (msg != null && msg.DequeueCount > 5)
            {
                this.imagesQueue.DeleteMessage(msg);
            }
            System.Threading.Thread.Sleep(5000);
        }
    }
}

Ha a ciklus egyes ismétlései után nem található üzenet, a program egy másodpercre alvó állapotba vált.After each iteration of the loop, if no queue message was found, the program sleeps for a second. Ez megakadályozza, hogy a feldolgozói szerepkör túl sok CPU-időt használjon és további tárolási tranzakciós költségeket halmozzon fel.This prevents the worker role from incurring excessive CPU time and storage transaction costs. A Microsoft ügyféltanácsadói csapatának van egy története egy fejlesztőről, aki ezt elfelejtette beépíteni, elvégezte az éles környezetbe való telepítést, azután elment nyaralni.The Microsoft Customer Advisory Team tells a story about a developer who forgot to include this, deployed to production, and left for vacation. Amikor visszatértek, a felügyelete több, mint a vakáció.When they got back, their oversight cost more than the vacation.

Néha előfordul, hogy az üzenetsor egyik üzenetének tartalma feldolgozási hibát okoz.Sometimes the content of a queue message causes an error in processing. Az ilyet ártalmas üzenetnek nevezik, és ha épp naplózott egy hibát, majd újraindította a ciklust, akkor az üzenet feldolgozásával a végtelenségig próbálkozhat.This is called a poison message, and if you just logged an error and restarted the loop, you could endlessly try to process that message. Ezért a catch blokk tartalmaz egy if utasítást, amely ellenőrzi, hogy az alkalmazás hány alkalommal próbálta feldolgozni az aktuális üzenetet, és amennyiben több mint 5 alkalommal, az üzenet törlődik az üzenetsorból.Therefore the catch block includes an if statement that checks to see how many times the app has tried to process the current message, and if it has been more than 5 times, the message is deleted from the queue.

ProcessQueueMessageakkor lesz meghívva, ha az üzenetsorban található üzenet.ProcessQueueMessage is called when a queue message is found.

private void ProcessQueueMessage(CloudQueueMessage msg)
{
    var adId = int.Parse(msg.AsString);
    Ad ad = db.Ads.Find(adId);
    if (ad == null)
    {
        throw new Exception(String.Format("AdId {0} not found, can't create thumbnail", adId.ToString()));
    }

    CloudBlockBlob inputBlob = this.imagesBlobContainer.GetBlockBlobReference(ad.ImageURL);

    string thumbnailName = Path.GetFileNameWithoutExtension(inputBlob.Name) + "thumb.jpg";
    CloudBlockBlob outputBlob = this.imagesBlobContainer.GetBlockBlobReference(thumbnailName);

    using (Stream input = inputBlob.OpenRead())
    using (Stream output = outputBlob.OpenWrite())
    {
        ConvertImageToThumbnailJPG(input, output);
        outputBlob.Properties.ContentType = "image/jpeg";
    }

    ad.ThumbnailURL = outputBlob.Uri.ToString();
    db.SaveChanges();

    this.imagesQueue.DeleteMessage(msg);
}

Ez a kód beolvassa az adatbázist a kép URL-címének lekéréséhez, miniatűrré alakítja a képet, a miniatűrt egy blobba menti, frissíti az adatbázist a miniatűr blob URL-címével, és törli az üzenetsorban lévő üzenetet.This code reads the database to get the image URL, converts the image to a thumbnail, saves the thumbnail in a blob, updates the database with the thumbnail blob URL, and deletes the queue message.

Megjegyzés

Az egyszerűség kedvéért a ConvertImageToThumbnailJPG metódusban lévő kód osztályokat alkalmaz a System.Drawing névtérben.The code in the ConvertImageToThumbnailJPG method uses classes in the System.Drawing namespace for simplicity. A névtérben lévő osztályok viszont a Windows-űrlapokkal való használatra lettek tervezve.However, the classes in this namespace were designed for use with Windows Forms. Windows- vagy ASP.NET-szolgáltatásban való használatuk nem támogatott.They are not supported for use in a Windows or ASP.NET service. További információk a képfeldolgozási beállításokról: Dynamic Image Generation (Dinamikus képek létrehozása) és Deep Inside Image Resizing (A képek átméretezésének részletei).For more information about image-processing options, see Dynamic Image Generation and Deep Inside Image Resizing.

HibaelhárításTroubleshooting

Ha az oktatóanyag utasításainak követése ellenére valami mégsem működne, íme néhány gyakran előforduló hiba és azok megoldása.In case something doesn't work while you're following the instructions in this tutorial, here are some common errors and how to resolve them.

ServiceRuntime.RoleEnvironmentExceptionServiceRuntime.RoleEnvironmentException

A RoleEnvironment objektumot az Azure biztosítja az alkalmazás Azure-ban való futtatásakor, vagy az Azure Compute Emulator használatával történő helyi futtatáskor.The RoleEnvironment object is provided by Azure when you run an application in Azure or when you run locally using the Azure compute emulator. Ha a helyi futtatás során ez a hiba jelenik meg, ellenőrizze, hogy a ContosoAdsCloudService projektet állította-e be kiindulási projektként.If you get this error when you're running locally, make sure that you have set the ContosoAdsCloudService project as the startup project. Beállítja a projektet, hogy az Azure Compute Emulator használatával fusson.This sets up the project to run using the Azure compute emulator.

Az alkalmazás többek között a .cscfg-fájlokban tárolt kapcsolatisztring-értékek lekérésére használja az Azure RoleEnvironmentet, ezért a kivétel egy másik oka egy hiányzó kapcsolati sztring.One of the things the application uses the Azure RoleEnvironment for is to get the connection string values that are stored in the .cscfg files, so another cause of this exception is a missing connection string. Győződjön meg arról, hogy a ContosoAdsWeb projekt Felhő- és a Helyi konfigurációiban is létrehozta a StorageConnectionString beállítást, illetve arról is, hogy a ContosoAdsWorker projekt mindkét konfigurációjában létrehozta mindkét kapcsolati sztringet.Make sure that you created the StorageConnectionString setting for both Cloud and Local configurations in the ContosoAdsWeb project, and that you created both connection strings for both configurations in the ContosoAdsWorker project. Ha a Find All (Összes keresése) funkció használatával keres a StorageConnectionString kifejezésre a megoldás egészében, 6 fájlban, 9 alkalommal kell megjelennie.If you do a Find All search for StorageConnectionString in the entire solution, you should see it 9 times in 6 files.

A felülbírálás nem alkalmazható a(z) xxx portra.Cannot override to port xxx. Az új port a HTTP protokoll esetében megengedett legalacsonyabb, 8080 érték alatt vanNew port below minimum allowed value 8080 for protocol http

Próbálja módosítani a webes projekt által használt port számát.Try changing the port number used by the web project. Kattintson a jobb gombbal a ContosoAdsWeb projektre, majd kattintson a Properties (Tulajdonságok) elemre.Right-click the ContosoAdsWeb project, and then click Properties. Kattintson a Web lapra, majd módosítsa a port számát a Projekt URL-címe beállításban.Click the Web tab, and then change the port number in the Project Url setting.

A probléma megoldására irányuló alternatív megoldásért tekintse meg a következő szakaszt.For another alternative that might resolve the problem, see the following section.

A helyi futtatás során felmerülő egyéb hibákOther errors when running locally

Alapértelmezés szerint az új felhőszolgáltatás-projektek az Azure Compute Emulator Express használatával szimulálják az Azure-környezetet.By default new cloud service projects use the Azure compute emulator express to simulate the Azure environment. Ez a teljes Compute Emulator egyszerűsített verziója, és bizonyos körülmények között előfordulhat, hogy a teljes emulátor akkor is működik, amikor az Express verzió nem.This is a lightweight version of the full compute emulator, and under some conditions the full emulator will work when the express version does not.

Ha a teljes emulátor használatára szeretné módosítani a projekt beállítását, kattintson a jobb gombbal a ContosoAdsCloudService projektre, majd kattintson a Tulajdonságok lehetőségre.To change the project to use the full emulator, right-click the ContosoAdsCloudService project, and then click Properties. A Tulajdonságok ablakban kattintson a Web lapra, majd kattintson a Use Full Emulator (Teljes emulátor használata) választógombra.In the Properties window click the Web tab, and then click the Use Full Emulator radio button.

Az alkalmazás teljes emulátorral való futtatásához rendszergazdai jogosultságokkal kell megnyitnia a Visual Studiót.In order to run the application with the full emulator, you have to open Visual Studio with administrator privileges.

További lépésekNext steps

A Contoso Ads alkalmazás kialakítása szándékosan egyszerű az első lépéseket ismertető oktatóanyag kedvéért.The Contoso Ads application has intentionally been kept simple for a getting-started tutorial. Nem valósítja meg például a függőségi beszúrást vagy a működési minták adattárát és egységét, nem használ felületet a naplózáshoz, nem használ EF Code First áttelepítést az adatmodellek kezeléséhez vagy EF-kapcsolati rugalmasságot az átmeneti hálózati hibák kezeléséhez stb.For example, it doesn't implement dependency injection or the repository and unit of work patterns, it doesn't use an interface for logging, it doesn't use EF Code First Migrations to manage data model changes or EF Connection Resiliency to manage transient network errors, and so forth.

Az alábbiakban példákat talál felhőszolgáltatás-alkalmazásokra, amelyek több valós kódolási gyakorlatot mutatnak be az egyszerűbbektől az összetettebbekig:Here are some cloud service sample applications that demonstrate more real-world coding practices, listed from less complex to more complex:

  • PhluffyFotos.PhluffyFotos. Az elve hasonló a Contoso Ads elvéhez, de több funkciót és valós kódolási gyakorlatot alkalmaz.Similar in concept to Contoso Ads but implements more features and more real-world coding practices.
  • Azure Cloud Service Multi-Tier Application with Tables, Queues, and Blobs (Többrétegű Azure-felhőszolgáltatás táblákkal, üzenetsorokkal és blobokkal).Azure Cloud Service Multi-Tier Application with Tables, Queues, and Blobs. Ismerteti az Azure Storage-táblákat, valamint a blobokat és üzenetsorokat.Introduces Azure Storage tables as well as blobs and queues. Az Azure SDK for .NET egy korábbi verzióján alapul. Az aktuális verzióval való használathoz néhány módosítást kell végrehajtani.Based on an older version of the Azure SDK for .NET, will require some modifications to work with the current version.

Általános információk a felhőalapú fejlesztésről: Building Real-World Cloud Apps with Azure (Valódi felhőalapú alkalmazások létrehozása az Azure használatával).For general information about developing for the cloud, see Building Real-World Cloud Apps with Azure.

Bemutató videó az Azure Storage ajánlott eljárásairól és mintáiról: Microsoft Azure Storage – What's New, Best Practices and Patterns (Microsoft Azure Storage – Újdonságok, ajánlott eljárások és minták).For a video introduction to Azure Storage best practices and patterns, see Microsoft Azure Storage – What's New, Best Practices and Patterns.

További információkért lásd a következőket:For more information, see the following resources: