0

そのため、最近Silverlight Webサイトを展開していますが、すでにかなり恐ろしいバグに気づきました。

私のSilverlightアプリには、同じWebサイトのWebアプリでホストされているwcfサービスへの5つのバインディングがあり、1つ先のフォルダーにあります。私のウェブサイトがwww.test.comだとしましょう。SilverlightアプリのServiceReferences.ClientConfigからのバインディングは次のとおりです。

<client>
    <endpoint address="http://www.test.com/MyWebService/Service1.svc"
        binding="customBinding" bindingConfiguration="CustomBinding_IService1"
        contract="Service1.IService1" name="CustomBinding_IService1" />
    <endpoint address="http://www.test.com/MyWebService/Service2.svc"
        binding="customBinding" bindingConfiguration="CustomBinding_IService2"
        contract="Service2.IService2" name="CustomBinding_IService2" />
    <endpoint address="http://www.test.com/MyWebService/Service3.svc"
        binding="customBinding" bindingConfiguration="CustomBinding_IService3"
        contract="Service3.IService3" name="CustomBinding_IService3" />
    <endpoint address="http://www.test.com/MyWebService/Service4.svc"
        binding="customBinding" bindingConfiguration="CustomBinding_IService4"
        contract="Service4.IService4" name="CustomBinding_IService4" />
    <endpoint address="http://www.test.com/MyWebService/Service5.svc"
        binding="customBinding" bindingConfiguration="CustomBinding_IService5"
        contract="Service5.IService5" name="CustomBinding_IService5" />
</client>

したがって、私の問題は、IIS WebサイトのルートディレクトリでホストされているデフォルトのaspxページでSilverlightアプリをロードすると、URLアドレスにtest.comと入力した場合にのみ接続が機能し、 www.testと入力した場合には機能しないことです。 .com。失敗することはありませんが、サービスを介して抽出する必要のあるデータが表示されず、資格情報で接続できません。(私のサービスの1つが認証に使用されているため)

wwwを削除して、アプリのServiceReferences.ClientConfigの値を変更しようとしましたが、状況は1ビット変わりません。wwwがオンのときではなく、URLにwwwがなくても接続は良好です。

4

1 に答える 1

0

さて、この素敵な投稿のおかげで、私はこの問題を克服することができました。リンクが切れた場合に備えて、ここで何をしなければならなかったかを説明します。

私がしなければならなかったのは、Silverlightコードの各サービスクライアントの各インスタンス化を変更することだけでした。

Service.IService proxy = new Service.ServiceClient();

これに:

Uri servUri = new Uri("../MyWebService/Service.svc", UriKind.Relative);
EndpointAddress servAddr = new EndpointAddress(servUri);
Service.IService proxy = new Service.ServiceClient("CustomBinding_IService", servAddr);

ブログ投稿で説明されているように、Silverlightアプリは(通常) ClientBinフォルダーにあるため、「..」が必要です。

そして、これは私のためにトリックをしました!

于 2013-02-17T16:12:36.230 に答える