Использование модулей в WebAPI

1. создать клас с хендлером

public class CustomHeaderHandler : DelegatingHandler
    {
        protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            request.Headers.Remove("Server");

            request.Headers.Add("Server", "WDAPI Server 4"); 
            return base.SendAsync(request, cancellationToken);
        }
    }

2.  добавить наш хендлер

            HttpConfiguration config = new HttpConfiguration();
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional });

   

                //вот так можно добавляеть хендлеры для обратботки запросов на низком уровне
                config.MessageHandlers.Add(new CompressedRequestHandler());
                config.MessageHandlers.Add(new GZipToJsonHandler());
                config.MessageHandlers.Add(new CustomIHeaderHandler());
                app.UseWebApi(config);

 

ссылки:

http://www.asp.net/web-api/overview/web-api-clients/httpclient-message-handlers

http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api

Инсталяция Windows Service и запуск с параметрами

В классе инсталлере проекта нужно добавить:

public partial class ProjectInstaller : System.Configuration.Install.Installer
{
	public ProjectInstaller()
	{
		this.InitializeComponent();
	}

	protected override void OnBeforeInstall(System.Collections.IDictionary savedState)
	{
		this.Context.Parameters["assemblypath"] = this.AppendPathParameter(Context.Parameters["assemblypath"], "-service");
		base.OnBeforeInstall(savedState);
	}

	protected override void OnBeforeUninstall(System.Collections.IDictionary savedState)
	{
		this.Context.Parameters["assemblypath"] = this.AppendPathParameter(Context.Parameters["assemblypath"], "-service");
		base.OnBeforeUninstall(savedState);
	}

	protected virtual string AppendPathParameter(string path, string parameter)
	{
		if (path.Length > 0 && path[0] != '"')
		{
			path = string.Format("\"{0}\"", path);
		}
		path += string.Format(" {0}", parameter);
		return path;
	}
}

SignalR работа с включенным сжатием GZip

Если у вас включено динамическое сжатие, SignalR может перестать корректно работать, для этого сжатия для него нужно отключить:

<location path="signalr">
  <system.webServer>
    <urlCompression doDynamicCompression="false"/>
  </system.webServer>
</location>

Как заупсить IIS Express

В консоли надо выполнить
C:\>iisexpress /path:C:\MyWebSite /port:1234 

Или
C:\Program Files\IIS Express\iisexpress.exe /path:C:\MyWebSite /port:1234 

В зависимости от того где он установлен

mssql удалить все таблицы из базы данных

Вот скрипт для удаления всех таблиц из бд для mssql

USE [DATA-BASE-NAME]
GO
 declare @i int
 set @i = 0
 while (@i<99)
 begin
 declare @table_name varchar(100)
 declare table_list cursor for
 select name from sysobjects o2 where xtype='U' and
 not exists (
 select * from sysforeignkeys k
 join syscolumns c1 on (k.fkeyid = c1.id and c1.colid=k.fkey)
 join syscolumns c2 on (k.rkeyid = c2.id and c2.colid=k.rkey)
 where c2.id = o2.id and c1.id <> o2.id
 )
 open table_list
 fetch next from table_list into @table_name
 while @@fetch_status = 0
 begin
 print 'dropping table '+@table_name
 exec ('drop table '+@table_name)
 fetch next from table_list into @table_name
 end
 close table_list
 deallocate table_list
 set @i = @i+1
 end
GO

MongoDB и .net с чего начать

MongoDB – это NoSQL база данных, обладающая хорошим горизонтальным масштабированием.
Для .net есть готовый оффицильный драйвер, который мы и будем использовать.
И так:
Установка
    1. Для установки нужно скачать дистрибутив http://www.mongodb.org/downloads
    2. Распаковать файлы в папку где у вас будет находиться MongoDB я например сделал это в папке D:\MongoDB
    3. Создайте папку data в нашей новой папке.
    4. Дальше нужно выполнить C:\mongodb\bin\mongod.exe --dbpath d:\MongoDB\data\db  это запустит MongoDB
    5. Я использую MongoDB как сервис, чтоб не следить запушен он или нет. Для этого нужно запустить mongod.exe с специальными параметрами   C:\mongodb\bin\mongod.exe --install --dbpath d:\MongoDB\data\db --logpath mongodb
    6. После этого mongodb будет уставлена как служба.


http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/


Теперь переходим к проекту
1. Идем в NuGet и качаем оттуда официальный  драйвер.
2. После этого начинаем работать с MongoDB

var connectionStringMongo = "mongodb://localhost";
var client = new MongoClient(connectionStringMongo);

var server = client.GetServer();
var database = server.GetDatabase("TestDataBase"); /*подключиться к базе, 
или создать ее, если таковой нет*/

Программное создание или обновление БД для Telerik Open Access

string connectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
        UpdateDatabase(connectionString);

        #region создание\обновление бд
        private void UpdateDatabase(string connectionString)
        {
            using (var context = new MyEntityModel(connectionString))
            {
                var schemaHandler = context.GetSchemaHandler();
                EnsureDB(schemaHandler);
            }
        }

        private void EnsureDB(ISchemaHandler schemaHandler)
        {
            string script = null;
            if (schemaHandler.DatabaseExists())
            {
                script = schemaHandler.CreateUpdateDDLScript(null);
            }
            else
            {
                schemaHandler.CreateDatabase();
                script = schemaHandler.CreateDDLScript();
            }

            if (!string.IsNullOrEmpty(script))
            {
                schemaHandler.ExecuteDDLScript(script);
            }
        }
        #endregion

Определение символа разделителя десятичного числа C#

Для этих целей служит

string separator = System.Globalization.CultureInfo.CurrentCulture
.NumberFormat.NumberDecimalSeparator;

Этим мы получим разделитель для текущей культуры, также оттуда можно получить еще много чего полезного.

http://msdn.microsoft.com/ru-ru/library/system.globalization.numberformatinfo.numberdecimalseparator.aspx

regular expressions (regex) - справочник

[abc]
Один символ: a, b или c
A single character of: a, b or c
[^abc] Любой символ, за исключением: a, b или c Any single character except: a, b or c
[a-z] Любой одиночный символ из диапазона a-z Any single character in the range a-z
[a-zA-Z] Любой символ в диапазоне a-z или A-Z Any single character in the range a-z or A-Z
^ Начало строки Start of string
$ Конец строки End of string
. Любой символ Any single character
\s Любой символ пробела Any whitespace character
\S Непробельного характера Any non-whitespace character
\d Любая цифра Any digit
\D Любой не-цифа Any non-digit
\w Любое слово, символ (буква, цифра, подчеркивание) Any word character (letter, number, underscore)
\W Любой не символ слова Any non-word character
\b Граница слова A word boundary
\B Инверсными границе слова Negated word boundary
(...) Захватить все закрытые Capture everything enclosed
(a|b) a или b a or b
a? Ноль или один из Zero or one of a
a* Нуль или больше Zero or more of a
a+ Один или несколько One or more of a
a{3} Ровно 3 из Exactly 3 of a
a{3,} 3 или более 3 or more of a
a{3,6} Между 3 и 6 Between 3 and 6 of a
(?:...)
Номера для группы захвата Non-capturing group
(?>...) Атомной группы (не отступать) Atomic group (does not backtrack)
(?|...) Дубликат подшаблоном группы. Duplicate subpattern group.
(?#...) комментировать Comment
(?'name'...) Именованные группы захвата Named capturing group
(?<name>...) Именованные группы захвата Named capturing group
(?P<name>...) Именованные группы захвата Named capturing group
(?JismxXU) Встроенные модификаторы Inline modifiers
(?(...)..|..) Условный (IF) заявление Conditional (IF) statement
(?R) Recurse всей картины Recurse the entire pattern
(?1) Recurse первый подшаблоном Recurse the first subpattern
(?=...) Положительный просмотр вперед Positive Lookahead
(?<=...) Положительный просмотр назад Positive Lookbehind
(?!...) Отрицательный просмотр вперед Negative Lookahead
(?<!...) Отрицательный просмотр назад Negative Lookbehind
(*...) Глаголы Verbs
\A Начало строки Start of string
\G Специальные якорь, полезные с / г Special anchor, useful with /g
\p{..} or \p.. Свойств символов Юникод Unicode character properties
\z Конец строки End of string
[abc]* 0 или более, В и С [жадный] 0 or more of a, b or c [greedy]
[abc]*+ 0 или более, В или С [притяжательные] 0 or more of a, b or c [possessive]
[abc]*? Ноль или более из A, B или C [ленивый] Zero or more of a, b or c [lazy]
\Q...\E Цитата; Рассматривать как литералы Quote; Treat as literals
[[:alnum:]] Posix стиле символ класса Posix style char class
     
     
     
flags: i: case insensitive m: make ^$ match start and end of line respectively s: make dot match newlines g: all matches
Флаги: i : без учета регистра m : сделайте ^ $ начала матча и в конце строки соответственно s : сделать перевод строки точка матч g : Все матчи

http://msdn.microsoft.com/ru-ru/library/az24scfc.aspx

http://regex101.com/