Silverlight:在实时服务器上部署时,网络摄像头未被激活

时间:2014-01-18 14:54:15

标签: 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 个答案:

答案 0 :(得分:1)

根据MSDN

  

调用RequestDeviceAccess应该从a的上下文中完成   用户发起的事件。如果进行的呼叫不是来自a   用户启动的上下文,不会抛出异常。但是,对话框是   在这种情况下不显示。 RequestDeviceAccess返回值将是   仍然返回任何先前授予的访问请求或其他的结果   在这种情况下的条件,但否则呼叫是无操作。

因此,您不能在类构造函数上调用CaptureDeviceConfiguration.RequestDeviceAccess(),但应该从用户事件中调用它,例如单击按钮。

在Visual Studio中进行测试之前,您可能之前从用户启动的事件中调用了它。我相信在您将代码移动到构造函数之后,由于之前授予的访问权限,该方法返回true。但是当您发布网站时,浏览器,因为您访问的是其他域,您的应用程序没有授予访问权限。这就是它在visual studio中工作的原因,但不适用于实时服务器。