Eugene Agafonov on the .Net

  • Архив
  • RSS
  • Ask me anything
elenasl:

Prague. January 2013. Church of St. Nicholas. 
Pop-upView Separately

elenasl:

Prague. January 2013. Church of St. Nicholas. 

  • 4 месяца назад > elenasl
  • 26
  • Comments
  • Ссылка
  • Share
    Tweet

elenasl:

Prague. January 2013. St.Vitus Cathedral.

  • 4 месяца назад > elenasl
  • 6
  • Comments
  • Ссылка
  • Share
    Tweet

IIS 8, HTTP OPTIONS, CORS и ASP.NET Web API

Сегодня столкнулся с интересной проблемой. На одном из web api под IIS 8 не работала поддержка CORS из nuget-пакета Thinktecture.IdentityModel.
Здесь можно посмотреть пример использования этой библиотеки, и здесь - как нужно сконфигурировать приложение для корректной работы.
Просмотр запросов с помощью fiddler дал понять, что в ответ на http запрос OPTIONS сервер отвечает простым ответом ОК без указания нужных заголовков, в частности - Access-Control-Allow-Origin.

Опытным путем обнаружилось, что если на сервере включить опцию RAMMFAR ( runAllManagedModulesForAllRequests=”true”), то delegating handler для поддержки CORS начинает работать. Однако включать эту опцию не очень хотелось, пусть даже она влияет не на все managed модули, поэтому я продолжил исследования дальше.

Выяснилось что в моем случае в IIS установлен еще один хэндлер - OPTIONSVerbHandler. Как только я его убрал в web.config, приложение стало работать нормально при выключенной опции RAMMFAR.

Вот, что в итоге получилось в web.config:

    • #ru
    • #CORS
    • #IIS
    • #aspnetwebapi
  • 5 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet

IIS 8, HTTP OPTIONS, CORS and ASP.NET Web API

Today I met the challenging problem with one of my web apis running under IIS 8. CORS support which was implemented with nuget library Thinktecture.IdentityModel didn’t work properly.
Here you can find information how to use this library, and here is the link to configuration issues with IIS.

After spending some time with a fiddler tool I found out that the client sends the proper HTTP OPTIONS request, but the response from server lacks Access-Control-Allow-Origin and other useful http headers.

After some experiments it turned out that if I enable RAMMFAR option ( runAllManagedModulesForAllRequests=”true”) in web api web.config, the CORS delegating handler starts to work. However I don’t like turning on this option, even if it doesn’t really affect all managed modules in IIS, so I kept experimenting.

I found out that there is another handler defined in IIS, called OPTIONSVerbHandler. As soon as I removed it via application web.config file, CORS support started to work properly without need to enable RAMMFAR option.

This is system.webServer section in web.config:

    • #en
    • #aspnetwebapi
    • #aspnetwebapien
    • #CORS
    • #IIS
  • 5 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet

TypeScript - a typed JavaScript

Anders Heijlsberg introduces a new programming language: TypeScript, which is a typed superset of JavaScript. It will compile to normal javascript.

The TypeScript language specification is available under Open Web Foundation and the compiler implementation is available as Open Source.

Anders talk about TypeScript is available on Channel 9
http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript

    • #javascript
    • #typescript
    • #en
  • 7 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet

TypeScript - типизированный JavaScript

Андерс Хайлсберг представляет новый язык программирования - TypeScript, который является типизированным надмножеством языка JavaScript, и компилируется в него.

Спецификация языка TypeScript доступна на Open Web Foundation, a компилятор выложен в Open Source

Андерс рассказывает о TypeScript на Channel 9:
http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript

    • #javascript
    • #ru
    • #typescript
  • 7 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet

Resolving VPN problems on Windows 8

After installing Windows 8 as my primary OS I met one very tricky problem with VPN. I couldn’t connect to one of my VPN networks, and the same VPN connection on Windows 7 worked just fine.

The solution was to set the following security parameters in VPN connection’s properties:

    • #en
    • #windows 8
    • #vpn
  • 8 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet

Проблема с VPN в Windows 8

После перехода на Windows 8 в качестве основной рабочей системы на десктопе я долго не мог решить проблему с VPN. Одно из подключений отказывалось работать, при этом подключение с такими же параметрами на Windows 7 отлично работало.

Решение оказалось простым - нужно было выставить в свойствай VPN-подключения следующие параметры безопасности:

    • #ru
    • #windows 8
    • #vpn
  • 8 месяцев назад
  • 1
  • Comments
  • Ссылка
  • Share
    Tweet

How To Upgrade To Windows 8 RTM From Release Preview

It was actually very easy to upgrade to windows 8 RTM.
You just mount the .iso file, then run the installer. Choose “keep my files”, type in your product key, and then you’re all set. After the installation process completes, you will have new OS installed. The files in your user directory under My Documents, etc, will be migrated. Your old system directories will be moved to windows.old folder.
If you want to delete the old files, you can use disk cleanup. Right click on your disk, choose properties, then disk cleanup, then clean up system files. Then choose old windows files, and proceed with removing them.
Unfortunately, you will have to reinstall your programs after.

    • #Windows 8
    • #en
  • 9 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet

Как обновить windows 8 release preview до RTM

Это оказалось очень просто сделать. Нужно просто смонтировать .iso файл c образом windows 8 RTM, и запустить установку. Дальше нужно выбрать опцию “сохранить мои файлы”, и ввести продуктовый ключ. После чего процесс установки все сделает сам.
Файлы в таких директориях как My Documents будут скопированы в новый профиль пользователя. Файлы в других директориях останутся на своих местах. Файлы в старых системных директориях будут перемещены в директорию windows.old.
Чтобы ее удалить, можно воспользоваться мастером очистки дисков. Нужно выбрать системный диск, нажать правой кнопкой и выбрать disk cleanup, затем clean up system files. После чего надо отметить пункт windows old files, и начать процесс очистки диска.
К сожалению, установленые программы не мигрируются, и их надо будет переустановить заново.

    • #windows 8
    • #ru
  • 9 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet

Видео моего доклада про асинхронное программирование в ASP.NET

Видео доступно на сайте techdays.ru. Презентация и примеры кода лежат на github. Буду рад вопросам, замечаниям, предложениям о чем рассказать в следующий раз.

    • #asp.net
    • #async
    • #msdevcon
    • #ru
  • 10 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet

Writing Unit Tests For ASP.NET Web API RC

After I moved one of my solutions to ASP.NET Web API RC I found almost every test broken. A quick investigation shown, that I get null reference exceptions, because of new HttpResponseMessage creation paradigm in ASP.NET Web API RC. Instead of creating new HttpResponseMessage instance, I now have to call Request.CreateResponse() method, and obviously I had null Request in my test environment.


So, I instantiated a new HttpRequestMessage instance and added it to the Request property of the controller being tested. But this was not enough to fix things, and the next problem wasn’t that obvious and took time for me to find out the solution.


The next problem was that newly created request message lacked an instajce of HttpConfiguration attached to it. And to attach this configuration to the request message, one have to set this instance into HttpRequestMessage.Properties dictionary by the special key. So, the following is the final code which fixed my tests:


    • #aspnetwebapi
    • #en
    • #unittest
    • #aspnetwebapien
  • 11 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet

Как писать тесты для ASP.NET Web API RC

После миграции на APS.NET Web API RC в одном из моих приложений у меня сломались все тесты. Довольно быстро удалось выяснить, что причина - NullReferenceException, который возникает по причине изменения способа конструирования HttpResponseMessage в ASP.NET Web API RC. Вместо того, чтобы создавать новый экземпляр HttpResponseMessage, теперь надо вызывать метод Request.CreateResponse(), а в тестовом окружении, естественно, свойство Request у контроллера было null.

Чтобы это исправить, я создал экземпляр HttpRequestMessage, и назначил его свойству Request тестируемого контроллера. Но этого оказалось недостаточно, и вот дальше найти, что происходит и как все починить, было не совсем просто :)

Следующая проблема заключалась в том, что экземпляр HttpRequestMessage должен содержать в себе экземпляр HttpConfiguration, и чтобы его прикрепить, нужно было его назначить по хитрому ключу в словарь свойств HttpRequestMessage.Properties. Ниже пример кода, который у меня работает:


    • #aspnetwebapi
    • #ru
    • #unittest
  • 11 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet

Мой доклад на DevCon про асинхронное программирование в ASP.NET MVC

По следам девкона, меня просто поразило количество пришедших на мой доклад людей. Это было очень приятно, и огромное спасибо, что вы пришли! Надеюсь доклад поможет в освоении асинхронного кода и подготовке к выходу ASP.NET MVC 4 и C# 5.
Пока запись доклада не выложили, но примеры кода и презентацию я уже выложил на GitHub здесь: http://bit.ly/Kq6hOB
Буду рад вопросам, и вообще любому общению. Общаться очень удобно в twitter https://twitter.com/#!/eugene_agafonov , или можно написать сюда в комментарии.

После конференции обнаружил, что в машине сдох аккумулятор. Огромное спасибо всем, кто остановился помочь, поделился проводами, пытался подзарядить меня, и вообще помогал меня спасти. Но отдельное спасибо Володе Гусарову, который просто как добрый волшебник нашел нужный инструмент, снял аккумулятор, что на моем пыже не так то и просто, довез меня до ближайшего магазина автозапчастей, и приладил новый аккумулятор на место :)

В общем, было весело, и, надеюсь, еще увидимся! Кстати, если есть пожелания, какой доклад хотелось бы услышать - буду рад их узнать.

    • #asp.net mvc
    • #async
    • #devcon
  • 11 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet

Доклад на DevCon12 про асинхронность и ASP.NET (WEB403) MVC

23 мая в 18:30 я буду рассказывать про асинхронное программирование в ASP.NET MVC. Код сессии - WEB403. Это уже третий девкон, на котором я выступаю, но все равно чем ближе, тем больше волнуюсь.
В докладе я буду рассказывать про то, как правильно писать асинхронный код, почему 90% примеров в интернете не совсем правильные, про то, как подготовить свое приложение к выходу C# 5 и новой Visual Studio. Покажу забавный фокус с LINQ query comprehensions :) Ну и вообще, надеюсь внести ясность, как это все работает, причем рассказывать планирую на достаточно простом уровне.
Приходите на доклад, или смотрите его онлайн на сайте конференции.
Если кому-то интересен конкретный вопрос - пишите, я вполне могу еще что-то добавить в доклад!
Отдельная просьба - поставить оценку докладу. Оценки определяют, будут меня дальше звать выступать на конференциях, или нет. И если вам захочется еще услышать мой доклад - не стесняйтесь :) Если захотите, чтобы меня больше никогда не звали - тоже пишите :)

    • #ru
    • #async
    • #asp.net
    • #mvc
    • #asp.net mvc
  • 12 месяцев назад
  • Comments
  • Ссылка
  • Share
    Tweet
← Далее • Назад →
Страница 1 из 5

Общие сведения

Avatar
Евгений Агафонов, Microsoft MVP ASP.NET, RSDN Team, .NET и C# эксперт. Руководитель группы веб-разработки Lingvo в ABBYY

Eugene Agafonov, Microsoft MVP ASP.NET, RSDN Team, .NET and C# expert. Head of Lingvo Web Development at ABBYY

Me, Elsewhere

  • @eugene_agafonov on Twitter
  • Facebook Profile
  • Google
  • Linkedin Profile
  • eugeneagafonov on github

Twitter

loading tweets…

  • RSS
  • Случайное
  • Архив
  • Ask me anything
  • Мобильная версия

(c)2012 Eugene Agafonov. Effector Theme by Pixel Union.

На платформе Tumblr