3

Visual Studio 2010 で C#/ASP.NET アプリケーションを作成し、その中にservice.svcファイルと対応する

  • IService.cs//契約
  • Service.cs//コントラクトの実装 - インターフェイス

この WCF サービスは、データを JSON で返します。jQuery ajax postでヒットしました。このサービスは私が望んでいたように機能しているように見えましたが、2 つ目のサービス、つまりServiceNew.svc対応するサービスを追加することにしました。

  • IServiceNew.cs//契約
  • ServiceNew.cs//コントラクトの実装 - インターフェイス

に対応するエンドポイントを追加しますweb.config

2 番目の WCF サービスを追加した後、どのサービスも機能せず、500 内部サーバー エラーが返されました。

最も奇妙な部分は、アプリケーションのフォルダーからすべての新しいファイルを削除するとServiceNew.svc、以前のように jQuery 投稿でそれらをヒットしたときに最初に機能し、次にこれらのファイルをフォルダーに再度コピーして実行するIServiceNew.csServiceNew.csService.svcVisual Studio ホストの場合、私のサービス (古いものと新しいもの) の両方がランダムな期間動作し、jQuery ajax 呼び出しでサービスをヒットすると、突然 500 エラーが返されます。

web.configは:

<system.serviceModel>       
   <behaviors>
     <serviceBehaviors>
       <behavior name="ServiceBehavior">
         <serviceMetadata httpGetEnabled="true"/>
         <serviceDebug includeExceptionDetailInFaults="true"/>
       </behavior>
     </serviceBehaviors>
     <endpointBehaviors>
       <behavior name="EndpBehavior">
         <webHttp/>
       </behavior>
     </endpointBehaviors>
   </behaviors>
   <services>
     <service behaviorConfiguration="ServiceBehavior" name="Service">
       <endpoint address="" binding="webHttpBinding"
           contract="IService" behaviorConfiguration="EndpBehavior"/>
     </service>
     <service behaviorConfiguration="ServiceBehavior" name="ServiceNew">
       <endpoint address="" binding="webHttpBinding"
           contract="IServiceNew" behaviorConfiguration="EndpBehavior"/>
     </service>
   </services>
 </system.serviceModel>

IService.cs:

[ServiceContract]
public interface IService
{
    [OperationContract]
    [WebInvoke(Method = "POST",
 ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
    [return: MessageParameter(Name = "d")]
    MovieInfo GetMovieInfo(string title, string year);
}

Service.cs:

[AspNetCompatibilityRequirements(RequirementsMode
    = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service: IService
{
    public MovieInfo GetMovieInfo(string title, string year)
    {
          ...
          return MovieInfo();
        }
}

同様に

IServiceNew.cs:

[ServiceContract]
public interface IServiceNew
{
    [OperationContract]
    [WebInvoke(Method = "POST",
 ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
    [return: MessageParameter(Name = "d")]
    string GetConf();
}

ServiceNew.cs:

[AspNetCompatibilityRequirements(RequirementsMode
    = AspNetCompatibilityRequirementsMode.Allowed)]
public class ServiceNew: IServiceNew
{
    public string GetConf()
    {
          ...
          return conf;
        }
}

誰かが私が間違っていることを教えてもらえますか? jQuery ajax 呼び出しでヒットするために、ASP.NET アプリケーションに複数の WCF サービス ( .svc ファイル) を追加するにはどうすればよいですか?

私の何かが間違っていweb.configますか?

それは何か他のものですか?

ありがとう

アップデート:

更新として、.svc ファイルの 1 つをデバッグしようとすると、ブラウザーで ServiceNew.svc を例にすると、以下の例外が表示されると言えます。

ファイルまたはアセンブリ 'App_Web_oq2tdtg4, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

スタックトレース:

[FileNotFoundException: ファイルまたはアセンブリ 'App_Web_oq2tdtg4, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。システムは指定されたファイルを見つけることができません。 (AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +39 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity,

[ServiceActivationException: コンパイル中の例外のため、サービス '/ServiceNew.svc' をアクティブ化できません。例外メッセージは次のとおりです。指定されたファイルが見つかりません..] System.Runtime.AsyncResult.End(IAsyncResult 結果) +687598 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult 結果) +190 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication コンテキスト.

アセンブリ ロード トレース:

次の情報は、アセンブリ 'App_Web_oq2tdtg4, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' を読み込めなかった理由を特定するのに役立ちます。

=== バインド前の状態情報 === LOG: User = ZULUTRADE\stassis LOG: DisplayName = App_Web_oq2tdtg4, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null (完全指定) LOG: Appbase = file:// /C:/Users/stassis/Documents/Development/theDreamBox/ LOG: Initial PrivatePath = C:\Users\stassis\Documents\Development\theDreamBox\bin

呼び出しアセンブリ : (不明)。

ログ: このバインドはデフォルトのロード コンテキストで開始されます。ログ: アプリケーション構成ファイルの使用: C:\Users\stassis\Documents\Development\theDreamBox\web.config ログ: ホスト構成ファイルの使用: ログ: C:\Windows\Microsoft.NET\Framework\v4 のマシン構成ファイルの使用。 0.30319\config\machine.config. ログ: 現時点ではポリシーが参照に適用されていません (プライベート、カスタム、部分、または場所に基づくアセンブリ バインド)。ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/AppData/Local/Temp/Temporary ASP.NET Files/root/87ef3319/ec80b2f5/App_Web_oq2tdtg4.DLL. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/AppData/Local/Temp/Temporary ASP.NET Files/root/87ef3319/ec80b2f5/App_Web_oq2tdtg4/App_Web_oq2tdtg4.DLL。ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4.DLL. ログ:新しい URL ファイル:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4/App_Web_oq2tdtg4.DLL のダウンロードを試みています。ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/AppData/Local/Temp/Temporary ASP.NET Files/root/87ef3319/ec80b2f5/App_Web_oq2tdtg4.EXE. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/AppData/Local/Temp/Temporary ASP.NET Files/root/87ef3319/ec80b2f5/App_Web_oq2tdtg4/App_Web_oq2tdtg4.EXE. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4.EXE. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4/App_Web_oq2tdtg4.EXE. 新しい URL ファイル:///C:/Users/stassis/AppData/Local/Temp/Temporary ASP.NET Files/root/87ef3319/ec80b2f5/App_Web_oq2tdtg4.EXE のダウンロードを試みています。ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/AppData/Local/Temp/Temporary ASP.NET Files/root/87ef3319/ec80b2f5/App_Web_oq2tdtg4/App_Web_oq2tdtg4.EXE. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4.EXE. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4/App_Web_oq2tdtg4.EXE. 新しい URL ファイル:///C:/Users/stassis/AppData/Local/Temp/Temporary ASP.NET Files/root/87ef3319/ec80b2f5/App_Web_oq2tdtg4.EXE のダウンロードを試みています。ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/AppData/Local/Temp/Temporary ASP.NET Files/root/87ef3319/ec80b2f5/App_Web_oq2tdtg4/App_Web_oq2tdtg4.EXE. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4.EXE. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4/App_Web_oq2tdtg4.EXE. EXE。ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4.EXE. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4/App_Web_oq2tdtg4.EXE. EXE。ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4.EXE. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Users/stassis/Documents/Development/theDreamBox/bin/App_Web_oq2tdtg4/App_Web_oq2tdtg4.EXE.

4

3 に答える 3

2

よくわかりませんが、両方のサービスを同じアドレスにバインドしています。おそらく、サービスごとにエンドポイントアドレスを変更しています-実装

<services>
 <service behaviorConfiguration="ServiceBehavior" name="Service">
   <endpoint address="a" binding="webHttpBinding"
       contract="IService" behaviorConfiguration="EndpBehavior"/>
 </service>
 <service behaviorConfiguration="ServiceBehavior" name="ServiceNew">
   <endpoint address="b" binding="webHttpBinding"
       contract="IServiceNew" behaviorConfiguration="EndpBehavior"/>
 </service>
于 2013-02-12T12:55:32.330 に答える
1

観察しているのと同様の動作になるバグがあります。これが正確な問題かどうかはわかりませんが、このサポート ページを確認してください。

于 2013-02-12T13:21:28.970 に答える
1

数日前にサービスで同じ問題が発生しましたこちらをご覧ください

問題は、1 つの .config ファイルでサービスの実装を行う必要がなかったことです。

サービスをホストしたときServiceHost、実装のタイプを指定する必要がありましたが、構成ファイルで tow が定義されているため、エラーが発生し続けます。

私の解決策は、構成から 1 つのサービスを追加しServiceHost、C# で (別の に)もう 1 つのサービスを追加することでした。

于 2013-02-12T13:27:23.633 に答える