2014-01-18 3 views
0

Моя страница имеет Silverlight следующий код:Silverlight: вебкамеры не получаете активированную при развертывании на реальном сервере

public camera() 
{ 
     InitializeComponent(); 

     cs.CaptureImageCompleted += new EventHandler<CaptureImageCompletedEventArgs>(cs_CaptureImageCompleted); 
     VideoBrush vBrush = new VideoBrush(); 
     vBrush.SetSource(cs); 
     vBrush.Stretch = Stretch.Uniform; 
     Cam.Fill = vBrush; 
     if (CaptureDeviceConfiguration.RequestDeviceAccess()) 
     { 
      cs.Start(); 
     } 
} 

Этот код прекрасно работает, когда я запускаю сайт изнутри Visual Studio. Однако, как только я разворачиваю веб-сайт и запускаю его в Internet Explorer, мне даже не дают разрешения на включение веб-камеры.

Что происходит?

ответ

1

По MSDN:

Вызов RequestDeviceAccess должно быть сделано из контекста инициированного пользователем события. Если выполняется вызов, который не связан с инициированным пользователем контекстом , исключение не генерируется. Однако в этом случае диалоговое окно не отображается. Возвращаемое значение RequestDeviceAccess будет по-прежнему возвращает результаты любого ранее предоставленного запроса доступа или другого условия в этом случае, но в противном случае вызов является не-оператором.

Таким образом, вы не можете назвать CaptureDeviceConfiguration.RequestDeviceAccess() на вашем конструкторе класса, но должен вызвать его из пользовательского события, как нажатие кнопки.

Вы, вероятно, называли это от инициированного пользователем события до того, как вы протестировали визуальную студию. Я считаю, что после того, как вы переместили код в конструктор, а затем метод вернул true из-за его ранее предоставленного доступа. Но когда вы опубликовали свой веб-сайт, браузер, так как вы обращаетесь к другому домену, ваше приложение не имеет доступа. Вот почему он работает в visual studio, но не на реальном сервере.

Смежные вопросы