Опубликован: 28.01.2014 | Доступ: свободный | Студентов: 2075 / 180 | Длительность: 14:33:00
Самостоятельная работа 4:

Миграция Web-сайта в Cloud Services

< Лекция 8 || Самостоятельная работа 4: 1234 || Лекция 9 >

Нажмите на названии созданного пространства имён и нажмите на кнопку CONNECTION INFORMATION. Скопируйте из диалогового окна значения Default Issuer и Default Key.

Информация о подключении

увеличить изображение
Рис. 12.5. Информация о подключении

Откройте Visual Studio 2012 с правами администратора.

Нажмите New Project. Выберите шаблон Web\ASP.NET MVC 4 Web Application. Назовите проект MVC4Gallery. Выберите Internet Application и снимите галочку с опции Create a unit test project. Нажмите OK. Дождитесь создания проекта.

Нажмите правой кнопкой мыши на директории Models. Нажмите Add | Class. В открывшемся диалоговом окне введите Image.cs и нажмите OK. Замените содержимое файла Image.cs на код, приведённый ниже.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MVC4Gallery.Models
{
    public class Image
    {
        public string Title{ get; set; }
        public string Link{ get; set; }
    }
}

Откройте файл Views\Home\Index.cshtml и замените его содержимое на код, приведенный ниже.

<header>
    <div class="content-wrapper">
        <div class="float-left">
            <p class="site-title">
                Наш первый сайт-галерея
        </div>
    </div>
</header>
<div id="body">
    <section class="featured">
        <div class="content-wrapper">
           <form action="/Home/Upload" method="post" enctype="multipart/form-data">
                <label for="title">
           
            <label for="FileData">
                Файл</label>
            <input type="file" id="FileData" name="FileData" /><br />
            <input type="submit" value="Сохранить" />
           </form>
                Ваши изображения после "обработки":
            @foreach (var image in ViewData.Model)
            { 
   @image.Title <br />
                <img width="100" height="100" src="@image.Link" /><br />         
   
            }
        </div>
    </section>

</div>

Откройте файл Controllers\HomeController.cs и замените его содержимое на код, приведенный ниже. Необходимые зависимости и библиотеки будут добавлены в следующем пункте.

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Web;
using System.Web.Mvc;
using Microsoft.ServiceBus.Messaging;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;
using MVC4Gallery.Models;

namespace MvcApplication1.Controllers
{
    public class HomeController : Controller
    {

        public ActionResult Index()
        {
            List<Image> images = getBlobs("ourgallery");
            return View(images);
        }

        [HttpPost]
        [ActionName("Upload")]
        public ActionResult Upload(string author, string title)
        {
            this.SendBlobToStorage(author);
            return RedirectToAction("Index");
        }

        public void SendBlobToStorage(string author)
        {
            try
            {
                HttpPostedFileBase file = Request.Files[0];
                CloudBlob blob = getBlobContainer("ourgallery").GetBlobReference(file.FileName);
                NameValueCollection metadata = new NameValueCollection();
                metadata["title"] = file.FileName;                
                blob.UploadFromStream(file.InputStream);
                BrokeredMessage msg = new BrokeredMessage(blob.Uri.AbsoluteUri);
                SendBrokeredMessageToServiceBusQueue(msg);
            }
            catch (StorageClientException e)
            {
                Console.WriteLine("Возникла ошибка во время работы с хранилищем: " + e.Message); System.Environment.Exit(1);
            }
        }

        public List<Image> getBlobs(string author)
        {
            CloudBlobContainer container = getBlobContainer(author);

            List<Image> images = new List<Image>();
            foreach (CloudBlob blob in container.ListBlobs())
            {
                blob.FetchAttributes();
                Image image = new Image();
                image.Link = blob.Uri.AbsoluteUri;
                image.Title = blob.Metadata["title"];
                images.Add(image);
            }
            return images;
        }

        public static CloudBlobContainer getBlobContainer(string userId)
        {
            var account = CloudStorageAccount.FromConfigurationSetting("storageaccount");
            CloudBlobContainer container = account.CreateCloudBlobClient().GetContainerReference(userId);
            container.CreateIfNotExist();
            var permissions = container.GetPermissions();
            permissions.PublicAccess = BlobContainerPublicAccessType.Container;
            container.SetPermissions(permissions);
            return container;
        }

        public static void SendBrokeredMessageToServiceBusQueue(BrokeredMessage msg)
        {
            QueueDescription qd = new QueueDescription("servicebustest");
            qd.MaxSizeInMegabytes = 5120;
            qd.DefaultMessageTimeToLive = new TimeSpan(0, 1, 0);
            string connectionString =
            CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
            QueueClient Client = QueueClient.CreateFromConnectionString(connectionString, "servicebustest");
            Client.Send(msg);
        }

    }
}
< Лекция 8 || Самостоятельная работа 4: 1234 || Лекция 9 >
Руслан Муравьев
Руслан Муравьев

Сайт dreamspark пишет что код истек :(

Andriy Zymenko
Andriy Zymenko

Этот курс требует оновления https://portal.azure.com/#create/hub здесь нет пункта Web Site в разделе Compute. К тому же для создание трубуется подписка

Евгений Ермолов
Евгений Ермолов
Россия, Москва
Игорь Афанасьев
Игорь Афанасьев
Украина, Харьков, ХПИ, 2001