|
Сайт dreamspark пишет что код истек :( |
Миграция Web-сайта в Cloud Services
Нажмите на названии созданного пространства имён и нажмите на кнопку CONNECTION INFORMATION. Скопируйте из диалогового окна значения Default Issuer и Default Key.
Откройте 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);
}
}
}

