2

Ria サービスを使用する Silverlight 5 プロジェクトの 2 つの異なるバージョンがあります。どちらもローカルで動作します。古いバージョン (A) は、ISS7 に展開すると機能します。新しいバージョン (B) にはありません。バージョン B では、次のエラーで失敗するユーザー/パスワード認証があります。

  • Load operation failed for query 'Login'. the remote server returned an error: NotFound.

先週のさまざまな SO および MSDN の投稿を参照して、多くのトラブルシューティング手法を試しました。ここで提案されているエラー ログをweb.config に追加すると、次のログが記録されます。

  • The service '/ClientBin/MyApp-Web-Services-AuthenticationService.svc' does not exist.

それを調査すると、探している名前/パスでダミーの .svc ファイルを作成することを提案するこのフォーラムの投稿が見つかりました。結果:

  • The service '/ClientBin/DBCRM-Web-Services-AuthenticationService.svc' cannot be activated due to an exception during compilation. The exception message is: The ending bracket '>' for the 'ServiceHost' directive is missing in the '.svc' file..

上記のエラーの詳細は、私が提供した空の .svc ファイルであるため、あまり重要ではありません。プロジェクトが実際にそれに依存しているという事実を確認するのに役立っただけです

これがキッカーです...作業バージョンにもこのファイルは含まれていませんが、例外はスローされません。

サービスの必要性に関する言及を検索すると、驚くべきことに両方のソリューションで結果が得られました。両方のMyApp.Web.g.csファイルは同一で (CSDiff を実行)、両方に次の行が含まれています。

  • public AuthenticationContext() : this(new WebDomainClient<IAuthenticationServiceContract>(new Uri("DBCRM-Web-Services-AuthenticationService.svc", UriKind.Relative))) { }

どちらも同じパッケージ/デプロイ設定を持っています。ファイル システムにデプロイしてから、ファイルをホスト サーバーの IIS にコピーしています。

質問:

  1. この .svc ファイルを必須にする設定はどこにありますか? バージョン A では明らかに必要ありませんが、バージョン B では必要です。ここでも、fileMyApp.Web.g.csが唯一の参照であり、両方のバージョンに存在します。

  2. MyApp.Web.g.cs生成されたファイルです。Visual Studio 2010 のどのサービスがこのファイルを作成しますか? また、問題のファイルへの呼び出しを含めないように変更でき.svcますか?

2 つのソリューションをマージして、どの時点で .svc ファイルが必要になるかを確認します。それまでの間、どんなアイデアでも大歓迎です!

4

3 に答える 3

1

WCF Ria サービスは、wcf ria サービスの呼び出しを管理するために HttpModule を登録します。要求がサーバーに到着すると、そのモジュールは URL を読み取り、どのサービスをインスタンス化し、どのメソッドを呼び出すかを理解します。したがって、.svc ファイルが見つからないのはまったく正常なことです。.g.cs
をいじらないでください。問題はここにはありません。
web.config ファイルを見てください。次のような行が見つかるはずです。

<system.web>
    <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>
        <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>
于 2012-10-27T08:34:50.417 に答える