1

Internet Explorer で .NET 3.5 Windows Forms コントロールをホストしてプリンターへのアクセスを提供するアプリケーションがあります。このコントロールは、IE7 から IE10 (デスクトップ) まで正常に動作しますが、Windows 8.1 の IE11 (デスクトップ モード) では動作しません。

問題の PC には .NET 2.0/3.0/3.5 と .NET 4.0/4.5 の両方がインストールされて有効になっており、サイトは信頼済みゾーンに追加されており、CASPOL 権限は IE7 から 10 を実行している PC と同じように設定されています。また、EnableIEHosting は、PC の 32 ビット レベルと 64 ビット レベルの両方で 1 に設定されています。

DebugIEHost も試しました。フォーム コントロールが実際に作成されていることを示すログ。ローカルでのデバッグは、(JavaScript からの) コントロールのメソッドの呼び出しに問題があることを示しています。残っているのは、タスクマネージャーから閉じる必要があるロックされたIE11だけです。

前述のように、これは Windows XP の IE7 から IE10 から Windows 8.0 まで問題なく動作し、CASPOL 構成などが正しく設定されていることは間違いありません。

IE11 で .NET Windows フォーム コントロールをホストするときの他の問題や新しい構成要件を知っている人はいますか?

更新 #1

これでさらに縛れるようになりました。私は、返されないのは実際には WCF サービス クライアントのコンストラクターであると診断しました。これは単純に生成されたクライアント クラスであり、エンドポイント構成名を使用して基本コンストラクターを呼び出すだけです。残念ながら、基本クラスへの呼び出し内で失敗していますClientBase<T>.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 サービスを呼び出して、JavaScript 呼び出しによって参照/ID が渡されたオブジェクトに関する詳細情報を取得します。つまり、ID=1 を渡すと、コントロールは ID=1 で WCF サービスを呼び出して詳細を取得してから、それらの詳細をプリンターに送信します。ハングしているのは、この WCF サービスのクライアントのコンストラクターへの呼び出しです。

4

1 に答える 1