вторник, 30 ноября 2010 г.

Отправка email в ASP.NET: разработка и тестирование

В приложениях ASP.NET зачастую необходимо отправлять письма с уведомлениями или другие сообщения электронной почты. Делается это, как ив любом приложении .NET:

MailMessage myMessage = new MailMessage();
// Инициализация полей сообщения...
SmtpClient mySmtpClient = new SmtpClient();
// Инициализация клиента -- добавление хоста, имени пользователя и пароля
mySmtpClient.Send(myMessage);

Так вот, в помощь нам ASP.NET предоставляет пару вкусняшек. Первая -- автонастройка объектов SmtpClient из файла web.config. Итак, добавляем в файл конфигурауии следующее:









Ясно, что в поле from нужно вставить адрес, с которого будут отсылаться письма, в поле host адрес smtp-сервера для отправки. При необходимости можно ещё указать порт для подключения и некоторые другие параметры.
Всё, теперь после создания класса SmtpClient он уже настроен в соответствии с указанными в файле web.config параметрами. Извлекать их специально не нужно, всё за вас сделает .NET.

Вторая фишка касается этапа разработки и тестирования ПО. Если проект разрабатывается в команде, то для тестирования настраивать smtp-сервер для каждого программиста не хочется, да и ненужный поток писем совсем необязателен.
Честно сказать, я просто не смог настроить smtp таким образом, чтобы он отправлял письма, и каждый раз приходилось наталкиваться на Exception, что жутко раздражало :)
Так вот, для этих случаев можно настроить web.config таким образом, чтобы письма не отсылались, а просто сохранялись на диск в указанную папку.









Папка c:\Temp\ должна обязательно существовать.
Теперь на этапе разработки нас не будут беспокоить проблемы с настройкой smtp и, например, отсутствием интернета. Когда проект будет завершен и необходимо сделать Realease -- просто измените файл web.config так, чтобы он отправлял письма.

воскресенье, 28 ноября 2010 г.

Достать программно ConnectionString из файла app.config

Обычная ситуация: вы отлаживаете солюшн на работе и дома, где нужно подключаться к БД с разными параметрами в ConnectionString. Или для отладки используется БД на локальном компьютере, а в релизе подключение идет через интернет. Не важно, главное -- в решении объекты Connection создаются не один десяток раз, а менять каждый раз все ссылки не резон.

Итак, наши действия.
1. Создаем файл app.config, куда записываем ConnectionString для наших БД:






connectionString="Data Source=DRIVER\VADIMYANSQL;Initial Catalog=TestDB;Integrated Security=True"
providerName="System.Data.SqlClient" />




2. В нашем проекте заходим в Solution Explorer, делаем Add Reference и добавляем ссылку на сборку System.Configuration.

3. Чтобы в коде программы создать подключение с ConnectionString из нашего app.config:


string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["TestDBConnectionString"].ConnectionString;


Не забудьте в Properties к файлу app.config указать, что файл необходимо копировать в папку с исполняемым файлом проекта:


P.S. Очень полезный ресурс по строкам подключения: http://www.connectionstrings.com/

Генерация случайной строки

В этот вторник мне потребовался генератор строк. Есть много способов решить эту задачу, простые, извращенные, зависящие от входных данных и независящие от них. Но есть самый простой и лаконичный вариант.


private string GetRandomString()
{
string path = System.IO.Path.GetRandomFileName();
path = path.Replace(".", ""); // Убираем точку между именем файла и расширением
return path;
}


Функция возвращает произвольную строку из 11 символов английского алфавита и цифр. Это примерно 2,3*10^17 различных вариантов, для соблюдения уникальности вполне хватит.

Первый пост

Привет. Меня зовут Вадим Мартынов и на протяжении последнего года мне приходится быть разработчиком на .NET в общем и C# в частности. Есть ещё такой писатель Вадим Мартынов, это тоже я, но об этом более подробно можно почитать на моём сайте. А еще есть блоггер vadimyan. Невероятно, но это тоже я. Да, вот такой я триединый.
Но что же всё-таки я хотел бы показать в этом блоге? Вкратце это раскрыто в названии:
  1. Хитроумные приёмы, позволяющие легко решать сложные задачи.
  2. Интересные решения некоторых часто встречающихся проблем.
  3. Примеры, с которыми обязательно столкнуться и которые обязательно будут искать начинающие специалисты в .NET. Фактически, то, через что прохожу сейчас я, и через что предстоит пройти ещё многим :)

Добро пожаловать.