0

これは現在、Visual Studio 2012、Silverlight 5、および Ria Services で開発中です。展開に関するこれらの問題について聞いたことがありますが、まだそこまで進んでいません。

Fiddler で呼び出しを見ると、URL は次のようになります。

http://127.0.0.1:81/ClientBin/DanielHarris-SilverlightApp-RiaService-NameOfDomainServiceClass.svc/binary/GetColours

これは 404 を返していますが、URL に「/binary」を含める必要はないと思います。それを介して要求していた場合、呼び出しは成功します。

ここでもう少し情報を提供するために、ソリューションのレイアウトの概要を示します。

Class Library Containing an EF Entity Model (ObjectContext)
Silverlight Application
ASP.NET Web Application with a DomainService class
ASP.NET Web Application with the actual website that display the silverlight XAP
  • DomainService を使用する ASP.NET アプリは、EntityModel クラス ライブラリを参照します。
  • Silverlight アプリケーションでは RIA サービスが有効になっています。SL アプリ プロパティの RIA サービス リンクは、DomainService クラスを含む ASP.NET アプリに設定されています。
  • Silverlight XAP を表示する実際の Web サイトを含む ASP.NET Web アプリが起動し、適切な時点でコントロールを適切にロードします。RIA 呼び出しはすべて失敗します。

DomainService クラスを独自の .NET Web アプリケーションに配置することはサポートされていないのでしょうか? 私の考えでは、これにより、実際に Silverlight コントロールを表示する「メイン」Web アプリとは完全に分離された RIA のエンドポイントが作成されます。

それは私が間違っているところですか?

編集-エンティティモデルを独自のクラスライブラリからDomainServiceクラスを持つWebアプリに移動しようとしましたが、それでも同じ問題が発生します。DomainService、Entity Model、Silverlight アプリを表示するサイトはすべて同じプロジェクトにある必要がありますか? IE すべてが 1 つの Web アプリの下にあるのですか?

4

2 に答える 2

1

デフォルトでは、Silverlightアプリケーションは、それをホストしているアプリケーションでDomainServiceを見つけようとします。DomainServiceを別のURLに配置する場合は、そのURLをDomainContextのコンストラクターに渡す必要があります。

別のクラスライブラリを使用している場合は、Webアプリケーションがクラスライブラリを参照しているか、binディレクトリにクラスライブラリのdllがあることを確認する必要があります。また、RIAサービスのdllとweb.configのセットアップも必要です。後で行う最も簡単な方法は、RiaServices.ServerNuGetパッケージをクラスライブラリとWebアプリケーションの両方に追加することです。新しいパッケージは正しいdllを参照し、web.configを設定します。

于 2013-01-24T22:31:51.153 に答える
0

デフォルトでは、silverlight(ria svc) はバイナリ エンドポイントを使用します。

WCF は xml を圧縮し、バイナリになります。そうしないと、重くなる可能性があります。

フィドラーでトレースすると、ドメイン サービス呼び出しで常に /binary 式が表示されます。私もEFを使っています。したがって、バイナリはurlにある必要があります。構成エラーである必要があると思います。

ここに私の要求があります

/ClientBin/AHBBSus-Web-DomainSrv-DSrvSecurity.svc/binary/getServerDate

//リクエスト

< getServerDate xmlns="http://tempuri.org/"> < /getServerDate>

//応答

< getServerDateResponse xmlns="http://tempuri.org/"> < getServerDateResult> 2013-01-24T15:53:13.4574466+02:00 < /getServerDateResponse>

http://blogs.msdn.com/b/saurabh/archive/2009/11/23/understanding-the-wcf-in-wcf-ria-services.aspx

RIA サービスの ServiceHost は、デフォルトで次のエンドポイントを作成します -

a) Silverlight クライアントの場合: バイナリ エンドポイントを持つ SOAP。Address = “binary”、Binding = HttpTransportBindingElement と BinaryMessageEncodingBindingElement で構成される CustomBinding ..

詳細をログに記録することで、バインディングを追跡できます。これらの行を web.config に入れ、プロジェクトを実行し、ログ ファイルを開きます。

<system.diagnostics> 
<trace autoflush="true"> 
    <listeners> 
    </listeners> 
</trace> 
<sources> 
    <source name="System.ServiceModel" 
            switchValue="Information, ActivityTracing" 
            propagateActivity="true"> 
        <listeners> 
            <add name="sdt" 
                 type="System.Diagnostics.XmlWriterTraceListener" 
                 initializeData= "WcfDetailTrace.svclog" /> 
        </listeners> 
    </source> 
</sources> 

于 2013-01-24T13:59:44.280 に答える