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

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

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


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

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


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

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

Определение возможностей устройства по User Agent

Допустим необходимо узнать некоторый ряд данных о пользовательском устройстве, который отправил запрос на сервер:
  1. Тип устройства (телефон/смартфон, планшет, компьютер, робот)
  2. ОС (windows, mac os, android, ios)
  3. Данные экрана (поддерживаемое разрешение, тач или нет)
  4. Поддержка разметки (html, xhtml, wml)
Как правило такая информация не передаётся в HTTP-заголовках, но передаётся заголовок User-agent
Существует база данных заголовков User-agent с указанием некоторых данных об устройствах, отправляющих подобные заголовки

WCF Cache: MemoryCache

Используя .NET Framework 4 и выше можно использовать MemoryCache для хранения редко обновляемых данных

Использование совсем простое
  1. Проверяем наличие данных в кэше (MemoryCache.Default["<cache key>"])
  2. Если есть данные - возвращаем результат
  3. Если нет данных - достаём их из БД, например, и кладём в кэш (вернув результат, конечно) 
Пример использования

HTML5 output tag

HTML5 <output> тэг предназначен для вывода вычисленных приложением результатов (например какой-нибудь web-калькулятор)

Список атрибутов
  • id - идентификатор элемента
  • for - список идентификаторов элементов, влияющих на вывод информации
  • form - определяет список идентификаторов форм, к которым вывод привязан
  • name - имя элемента, по которому можно обращаться в тэгу на событии формы oninput
    Внимание: в IE (11) обращение идет по идентификатору (атрибут id)
Предлагаю взглянуть на код

Конечные точки, использующие "UriTemplate", не могут быть использованы с "System.ServiceModel.Description.WebScriptEnablingBehavior".

Полный текст:

Службе WebHost не удалось обработать запрос
 Сведения об отправителе: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/12211440
 Исключение: System.ServiceModel.ServiceActivationException: Не удается активировать службу "/SomeServiceName.svc" из-за возникновения исключения в процессе компиляции.  Сообщение об исключении: Конечные точки, использующие "UriTemplate", не могут быть использованы с "System.ServiceModel.Description.WebScriptEnablingBehavior".. ---> System.InvalidOperationException: Конечные точки, использующие "UriTemplate", не могут быть использованы с "System.ServiceModel.Description.WebScriptEnablingBehavior".

Собственно не юзайте enableWebScript с UriTemplate

WCF - подключение сервиса на web-страницу с использованием enableWebScript

Для использования WCF-сервиса на web-страницах через javascript есть возможность подключения сгенерированного WCF клиента специально для этого.

Демонстрационный код можно скачать здесь

Коротко, как сделать с нуля:
  1. Создаете проект WCF Service Application
  2. Интерфейс IService1 помечаете атрибутом ServiceContract с заданным Namespace равным CustomServices
  3. Сигнатуру метода GetData меняем на string GetData(string value)
  4. Имплементируем
  5. Переходим в файл Web.config
  6. Задаём некоторые параметры сервиса
  7. Теоретически сервис готов к использованию, подключаем скрипт на страницу одним из возможных способов:
    • тег script
    • ScriptManager
    • ScriptManager ещё раз

      Обратите внимание: отладочная версия скрипта размещена по адресу /Service1.svc/jsdebug, а релизная - /Service1.svc/js
  8. Пробуем:


  9. т.е. все использования сервиса сводится к вызовам методов через полученный JS-класс
     CustomServices.IService1.GetData(txtText.value, onSuccessonFail);

Ошибка CLR: 80004005

Полный текст ошибки:
Ошибка CLR: 80004005
Работа программы будет прекращена

Возможно поможет:
  1. Переустановка .NET
  2. Удалить пререлизные версии .NET
  3. Перекомпиляция приложения для .NET более старой версии
Смотри более развёрнутый ответ