DELETE и PUT запросы к методам ASP.NET MVC контроллера

На сайте ASP.NET MVC есть контроллер с методами:

[HttpGet]
public void Get(int? id) {
// получение объекта
}

[HttpPost]
public void Create(Model model) {
// создание объекта
}

[HttpDelete]
public void Delete(int? id) {
// удаление объекта
}

[HttpPut]
public void Update(int? id, Model model) {
// изменение объекта
}

При обращении к методам AJAX-запросам GET и POST работают корректно, но методы DELETE и PUT не выполняются – возвращается ошибка 401 Unauthorized.
Continue reading

Check-In в новую ветку в Team Foundation Server 2013

Представим следующую ситуацию: вы пилите некоторую функциональность в основной ветке проекта (бывает такое, согласитесь?).
В некоторый момент приходит осознание того, что заливать это в TFS нет никакой возможности (фича не доделана, появились более приоритетные задачи…).
И удалять, конечно же, тоже нельзя.
Continue reading

MS SQL и русский текст в Unicode

В веб-приложении на ASP.NET WebAPI используется база данных MS SQL, генерируемая с использованием Entity Framework 6 Code First. Collation этой базы данных – unicode. Однако, если создавать записи в этой БД с кириллическими символами, используя методы WebAPI-контроллера, русский текст заменяется на вопросительные знаки.

Continue reading

Программная отправка email из .NET-приложения

Код должен отправлять email:

var fromAddress = new MailAddress("shirobokov.andrey@gmail.com", "Andrey Shirobokov");
var toAddress = new MailAddress("shirobokov.andrey@gmail.com", "Shirobokov Andrey");
const string fromPassword = "парольепта";
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};

using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

​На строке smtp.Send(message) валится ошибка: “SMTP connection rquires a secure connection or client was not authenticated. 5.5.1 Authentication Required”

Решение:

Есть несколько возможных:

  1. Проверьте правильность пароля
  2. Попробуйте понизить уровень безопаснити аккаунта, с которого производится отправка по ссылке: https://www.google.com/settings/security/lesssecureapps
  3. Если, почему-то, у вас стоит UseDefaultCredentials = true – измените на false
  4. Если работает нормально локално, но не работает на продакшн-сервере – попробуйте залогиниться в google-аккаунт на прод. сервере (могут быть проблемы из-за различных timezone/часовых поясов и т.п.)
  5. Попробуйте изменить пароль на более сложный

Как ни странно, мне помог только 5ый пункт
Удачи!

VS2013 и Github

Team Foundation Server 2013 и Visual Studio 2013 “из коробки” научились работать с Github. Причем, работа эта ведется очень удобно.
Однако, при создании нового проекта в github есть нюансы. Здесь я опишу кратко как создать проект, исходный код которого будет храниться в github.

Для начала вам будет необходимо создать ПУСТОЙ репозиторий в Github:
1. Переходите на сайт github.com
2. Создаете репозиторий (кнопка “+” рядом с вашим именем)
3. В появившейся форме заполняете имя репозитория (обязательно) и описание (по желанию)
4. Нажимаете “Create repository”

Sic! Не надо ставить галочку напротив “Initialize this repository with readme” – это приведет к инициализации репозитория и из Visual Studio добавить проект в этот репозитоий уже не получится. Придется пользоваться другими средствами.

Теперь запустите Visual Studio 2013 и создайте тестовый проект. В окне создания проекта поставьте галочку напротив чек-бокса “Add to source control”:
github1

В окне “New Project” жмите “OK”. Вам будет предложен выбор системы хранения кода: TFS или Git. Создастся проект.

Теперь в source control в контекстном меню проекта вам будет доступно действие Commit в группе Source Control. Выполните свой первый коммит. Сейчас данные еще не отправились на сервер.

Для того, чтобы данные были на сервере вам необходимо выполнить Push:

  1. Переходим в Team Explorer
  2. Жмем на кнопку “Home” с изображением домика
  3. Теперь нажимаем на “Unsynced commits”. Отобразятся все коммиты, которые не были синхронизированы с серверомgithub1
  4. Нажимаете кнопку Sync и ваш исходных код отправляется на сервера github
  5. При выполнении первого push вам будет предложено указать URL вашего репозитория. Укажите URL репозитория, который мы создали ранее.

Если вы выполнили все верно, то открыв страницу вашего репозитория в браузере вы увидите там новые файлы, которые вы добавили только что.

Windows Phone и сторонние сервисы

При разработке приложений для Windows Phone, использующих сторонние сервисы (например, клиент для ВКонтакте), нужно помнить, что не каждый проверяющий имеет аккаунт в социальной сети.

Если ваше приложение – клиент для какого-то сервиса или просто использует возможности стороннего сервиса необходимо при публикации его в Windows Phone Store указывать тестового пользователя. В первый раз найти где это сделать не так-то просто:
wps
1. На странице добавления XAP кликаете на “More XAP options” (на картинке обведено красным)
2. Появится еще одно текстовое поле (там, где на картинке большой красный восклицательный знак). Туда и пишите все, что вы хотите, чтобы знали проверяющие ваше приложение модераторы.

Windows Phone Developer Tools и Windows Server 2008

При попытке установить Windows Phone Developer Tools на рабочей машине под управлением Windows 2008 R2 обнаржул крайне неприятное сообщение о том, что данная ОС неподдерживается. Логичный вопрос: отчего же? Решил, что это не повод останавливаться в попытках заставить работать WP Tools на Win2008r2. Немного погуглив нашел решение. Нам потребуется:

  1. скачать Windows Phone Developer Tools web bootstrapper
  2. в консоли перейти в папку, куда был сохранен скачанный файл. Распакуйте его выполнив команду “vm_web.exe /x” (vm_web.exe – имя скачанного файла). Выберите папку, в которую будет распакован файл.
  3. откройте в проводнике Windows папку, в которую был распакован файл на шаге 2. Откройте любым текстовым редактором файл “baseline.dat”
  4. найдите раздел [gencomp7788]
  5. измените значение параметра InstallOnLHS с 1 на 0
  6. измените значение параметра InstallOnWin7Server с 1 на 0
  7. сохраните и закройте файл baseline.dat
  8. выполните в консоли “setup.exe /web” из папки в которую распаковали vm_web.exe на шаге 2.

Не забудьте ключ /web – иначе установка завершится ошибкой.