Использование модулей в 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