Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在IE11/Windows 8.1中托管.NET 3.5_.net_Winforms_Wcf_Internet Explorer_Windowsformshost - Fatal编程技术网

在IE11/Windows 8.1中托管.NET 3.5

在IE11/Windows 8.1中托管.NET 3.5,.net,winforms,wcf,internet-explorer,windowsformshost,.net,Winforms,Wcf,Internet Explorer,Windowsformshost,我有一个应用程序,其中我在Internet explorer中托管了一个.NET 3.5 Windows窗体控件,以提供对打印机的访问。该控件在IE7到IE10(桌面)中工作正常,但在Windows8.1的IE11中(同样在桌面模式下)将无法工作 这台电脑同时安装并启用了.NET 2.0/3.0/3.5和.NET 4.0/4.5,该站点已添加到受信任区域,CASPOL权限设置与运行IE7到10的电脑上的权限相同,并且在电脑上的32位和64位级别上,EnableIEHosting都设置为1 我也试

我有一个应用程序,其中我在Internet explorer中托管了一个.NET 3.5 Windows窗体控件,以提供对打印机的访问。该控件在IE7到IE10(桌面)中工作正常,但在Windows8.1的IE11中(同样在桌面模式下)将无法工作

这台电脑同时安装并启用了.NET 2.0/3.0/3.5和.NET 4.0/4.5,该站点已添加到受信任区域,CASPOL权限设置与运行IE7到10的电脑上的权限相同,并且在电脑上的32位和64位级别上,EnableIEHosting都设置为1

我也试过DebugIEHost。指示实际上正在创建窗体控件的日志。本地调试表明问题在于调用一个控件方法(从JavaScript),该方法似乎永远不会返回,也似乎永远不会实际运行。我只剩下一个锁定的IE11,它必须从TaskManager关闭

如前所述,从IE7到IE10,在Windows XP到Windows 8.0上,这一切都没有问题,我绝对肯定CASPOL配置等都已正确设置

在IE11中托管.NET Windows窗体控件时,是否有人注意到任何其他问题或新的配置要求

更新#1

我现在已经能够将这一点进一步限制住了。我已经诊断出,实际上是WCF服务客户端的构造函数未能返回。它是一个简单生成的客户端类,因此只需使用端点配置名称调用基本构造函数;不幸的是,它在调用基类
ClientBase.ClientBase(string endpointConfigurationName)
时失败

鉴于这一新信息,我尝试禁用Windows防火墙,以防它以某种方式阻止创建服务客户端(尽管实际上,我不希望防火墙干预任何事情,直到客户端实际发出请求为止)。没有区别

我还尝试调用默认(无参数)构造函数;同样没有区别

我唯一的另一个想法是服务客户机的配置。这是如下的情况下,有什么突出的人

<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="WSHttpBinding_IMyService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" useDefaultWebProxy="true" allowCookies="false" />
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost/MyWeb/Services/MyService.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMyService" contract="wcfWS.IMyService" name="WSHttpBinding_IMyService">
            <identity>
                <dns value="localhost" />
            </identity>
        </endpoint>
    </client>
</system.serviceModel>

此配置由VS2012的WCF服务参考生成

仅供参考,控件调用WCF服务来检索有关对象的更详细信息,该对象的引用/id已通过JavaScript调用传入;i、 e.我传入ID=1,然后控件调用ID=1的WCF服务来检索细节,然后再将这些细节发送到打印机。正在挂起的是对该WCF服务的客户端构造函数的调用。

我取得了突破

因为我们无法在承载windows窗体控件的web应用程序中部署服务配置。 我在代码中创建了构造函数,它运行得非常好

下面是代码示例

    Dim binding As New BasicHttpBinding
    Dim endPoint As New EndpointAddress("http://SERVERNAME/<WEBSITE>/YOURSERVICE.svc")
    Dim obj As New TestWCFService.TestWCFServiceClient(binding, endPoint)
Dim绑定作为新的BasicHttpBinding
将终结点设置为新终结点地址(“http://SERVERNAME//YOURSERVICE.svc")
将obj作为新的TestWCFService.TestWCFServiceClient(绑定,端点)
希望这对你也有用。

我有了突破

因为我们无法在承载windows窗体控件的web应用程序中部署服务配置。 我在代码中创建了构造函数,它运行得非常好

下面是代码示例

    Dim binding As New BasicHttpBinding
    Dim endPoint As New EndpointAddress("http://SERVERNAME/<WEBSITE>/YOURSERVICE.svc")
    Dim obj As New TestWCFService.TestWCFServiceClient(binding, endPoint)
Dim绑定作为新的BasicHttpBinding
将终结点设置为新终结点地址(“http://SERVERNAME//YOURSERVICE.svc")
将obj作为新的TestWCFService.TestWCFServiceClient(绑定,端点)

希望这也适用于您。

“它以前也适用”对我们没有帮助。调试器的堆栈跟踪会有所帮助。启用非托管代码调试和Microsoft Symbol服务器。@Hans:谢谢,但我无法在IE中托管控件时直接调试该控件。不过,我一直在添加额外的输出,以便跟踪该控件的运行情况,并随后用此信息更新了帖子。我确实意识到,我最初的请求并没有提供大量信息,但那是当时所能提供的全部信息。当时,我担心这可能是一个已知的问题,可能功能已从IE11中删除,而删除该功能实际上是我问题的原因。“以前它曾经工作过”帮不了我们,帮不了你。调试器的堆栈跟踪会有所帮助。启用非托管代码调试和Microsoft Symbol服务器。@Hans:谢谢,但我无法在IE中托管控件时直接调试该控件。不过,我一直在添加额外的输出,以便跟踪该控件的运行情况,并随后用此信息更新了帖子。我确实意识到,我最初的请求并没有提供大量信息,但这是当时所能提供的全部信息。当时,我担心这可能是一个已知的问题,可能功能已从IE11中删除,而删除该功能实际上是我问题的原因。