Generic Handler Url Routing / Маршрутизация хендлера

Допустим есть у нас хендлер, расположенный по пути /Handlers/DataHandler.ashx
Не суть важно что он делает (отдаёт капчу, футболку виртуальной команды, изменённую картинку и т.п.), важно то, что вам почему-то захотелось сделать так, чтобы хендер отрабатывал по ссылке вида /somehandler/{dataKey}

Итак, хендлер вот такой:



Первое что приходит на ум - прописать вот такой роутинг:



Но что поделать, вы словите
  1. System.Web.HttpException:
  2. Тип 'Handlers.DataHandler' не является производным от 'System.Web.UI.Page'.

т.к. в классе BuildManager в методе CreateInstanceFromVirtualPath написана проверка на базовый тип (стр. 12):



Решение очень простое

Как убрать расширение .aspx из адреса страницы

Текущая ситуация: есть сайт, на нём довольно много страниц, адреса которых заканчиваются на .aspx, что есть совсем плохо (/about.aspx, вместо /about)
Довольно просто избавиться от расширений в путях, заюзав FriendlyUrlSettings

В RouteConfig или любом другом классе, отвечающим за маршрутизацию (лишь бы не Global.asax) необходимо уведомить RouteCollection о необходимости использования FriendlyUrlSettings:




NAnt + YUI Compressor

Собираем некоторые проекты в TeamCity
Логика сборки написана в "скрипте" для NAnt
В одном из проектов есть много css и js
Необходимо их минимифицировать

Для этой цели попробовал YUI Compressor for NAnt
Плюсы:
  1. Компактность использования
Минусы:
  1. Не дружит с русскими символами 0_о
  2. Не обновлялся с 15 сентября 2010-го
Посему заюзал YUI Compressor как написано на странице:
java -jar yuicompressor-x.y.z.jar [options] [input file]

Пришлось , конечно, поставить яву, но результат вполне норм:

Что делает показанный выше таргет:

  1. Ходит по всем js/css в проекте
  2. На каждый файл вызывает yuicompressor-2.4.8.jar
  3. Собственно всё, как результат - все файлы минифицированы
PS: возможно будет полезна дополнительно страница с описанием функций, доступных в NAnt


cannot call methods on slider prior to initialization; attempted to call method 'option'

Возможно вы создали слайдер и не запомнили ссылку на него, а после этого пытаетесь установить значение слайдера вот так:


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

P.S.: В последних версиях jQueryUI/jQuery попробовал - проблемы не увидел, может стоит просто обновиться

IIS 401.3 Error do not have permission

Моя ситуация:
  1. К сожалению в в проекте под IIS есть виртуальное приложение, каталогом которого является расшаренная папка с другой машины (допустим \\AnotherServer\Folder\)
  2. При попытке обратиться к виртуальному приложению проекта получаем ошибку IIS 401.3 Error do not have permission
  3. Разрешилось просто:

Если дело происходит с локальной папкой, а не с расшареной, то, вероятно, нужно всего лишь дать доступ на чтение этой папки пользователю IUSR 

The server variable is not allowed to be set.

При использовании Application Request Routing и модуля RewriteModule словил вот такую ошибку:

The server variable "HTTP_ACCEPT_ENCODING" is not allowed to be set.

Возможно используется модуль Rewrite 2.0, не позволяющий обновлять серверные переменные на уровне сайта

Необходимо:

  1. Выбрать в IIS нужный сайт
  2. В правой панели найти и перейти в модуль URL Rewrite
  3. В панели действий (правая колонка IIS) выбрать View Server variables... (нужны привилегии администратора)
  4. Откроется список серверных переменных, и, если не видите нужной вам переменной - просто добавьте её
Если словилась просто ошибка 500.50 и вы не знаете, что за серверную переменную необходимо добавить - пропишите в customErrors (файл web.config) mode=Off, либо откройте сайт прямо на сервере (т.е. локально), при условии, что customErrors mode=RemoteOnly

Использование web-камеры из javascript

Маленькая предыстория, месяца два назад обратились ко мне с задачей: реализовать возможность отправки фотографий пользователями прямо с сайта

Как следствие - маленький тестовый проект, в котором реализована отправка фото с web-камеры на сервер и вывод этого фото по ссылке
Публиковал эти 10 строк кода в windows-azure, не так уж плохо оказалось (пробная версия даёт 7 тыс. пробных рублей на что угодно), но увы - уже 30 дней истекли, так что демо в фидлере и код проекта в самом конце заметки


Удаленный рабочий стол на планшете

Microsoft Remote Desktop или 2X RDP Client
При необходимости настройки VPN - AnyConnect ICS+


Отследить изменение данных формы / Запретить закрытие страницы без сохранения

Коротко: предупредить уход пользователя со страницы, на который он произвёл изменения и не сохранил их