2つのプロジェクトを持つVisualStudio2010ソリューションがあります。1つはSilverlightクライアントで、もう1つはドメインサービスを追加したWebサイトです。カッシーニでデバッグする場合は正常に機能しますが、IISに公開すると、エンティティクエリから何も返されません。
これが私の最初の試みであるため、どこから始めればよいのかさえわかりません。
2つのプロジェクトを持つVisualStudio2010ソリューションがあります。1つはSilverlightクライアントで、もう1つはドメインサービスを追加したWebサイトです。カッシーニでデバッグする場合は正常に機能しますが、IISに公開すると、エンティティクエリから何も返されません。
これが私の最初の試みであるため、どこから始めればよいのかさえわかりません。
いくつかのこと:
カッシーニでの開発(回避できる場合は行わないでください)
IIS自体に対して開発することをお勧めします。IISとCassiniには違いがあり、それらに気付いていない場合は噛み付く可能性があり、それはより理にかなっています。あなたは常にあなたが開発している環境にできるだけ近く開発するべきです。カッシーニに展開している場合を除いて(そうでない場合は、誰も展開しません)、単純にできない場合(IISのローカルインストールがない場合)を除いて、カッシーニに対して開発する意味はありません。
Web配置
展開先のIISサーバーにWebDeployをインストールします。これを行ったら、ソリューション内のWeb /ドメインプロジェクトを右クリックして、[展開パッケージのビルド]を選択できます。
次に、Web Deployで使用できるパッケージを取得します。このパッケージは、単純なコマンドライン呼び出しでプロジェクトのすべて(Silverlight、ASP.NETコンポーネントなど)をIISに展開します。
IISへの展開にはいくつかの問題がある可能性があります。表示されるエラーメッセージを確認したいと思います。これらの情報がなければ、アドバイスを与えるのはかなり難しくなります。
PS:WCFRIAサービスには有効な定義があると思います;-)。
私の経験によると、これは最小限の構成ファイルですが、認証ドメインサービスまたはデータドメインサービス(LinqToEntitiesやLinqToSqlドメインサービスなど)を使用している場合は、さらに多くの設定が必要になります。
IISにWCFRIAに必要なすべてのセクションがあることを確認してください
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.serviceModel">
<section name="domainServices" type="System.ServiceModel.DomainServices.Hosting.DomainServicesSection, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" allowDefinition="MachineToApplication" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web>
<!-- You might need identify tag if you app requires additional permission to run -->
<!-- See you want to see more details when a error happens -->
<customErrors mode="Off"/>
<compilation debug="true" targetFramework="4.0" />
<!-- If your application uses authentication and authoriztion then -->
<!-- Elements required required for authentication: authentication and membership and probably roleManager -->
<httpModules>
<add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add name="DomainServiceModule" preCondition="managedHandler"
type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
</configuration>
WCFRIAサービスが稼働していることを確認し ます。Webブラウザーを使用してWCFRIAサービスにアクセスしてみてください。通常、公開しているサービスの形式は次のとおりです。
http:// [hostname] / [namespacename]-[classname] .svc
したがって、URLをヒットして、次のような出力を表示できるはずです。
DLLが使用可能であることを確認するサーバー側にWCFRIAdll を展開するための2つのオプションがあります。DLLをアプリケーションのbinフォルダーにコピーする必要があることをアプリケーションに指定するか、サーバーモードでWCFRIAインストーラーを実行できます。
クライアントからのサービスへのアクセス サービスが稼働している場合は、Silverlightクライアントにアクセスできる必要があります。エラーが発生した場合は、WCFRIAデバッグを有効にしてトレースを開始できます。詳細については、 http://blogs.msdn.com/b/saurabh/archive/2010/03/16/ria-services-application-deployment.aspxを参照してください。
これは非常に愚かな、初心者の問題でした。SQL Server Profilerを使用してクエリが着信するのを監視し、SQLServerに対する認証に使用されているアカウントがサーバーのコンピューターアカウントであることに気付きました。ドメインサービスのメソッドを保護し、コンピューターアカウントにDBへのアクセスを許可しました。