37

Eval.svcVisual Studio 2012 内で右クリックしてブラウザーで表示すると、次のようになります -

ServiceHost ディレクティブで Service 属性値として提供されるか、構成要素 system.serviceModel/serviceHostingEnvironment/serviceActivations で提供されるタイプ 'EvalServiceLibary.Eval' が見つかりませんでした。

テスト クライアントから WCF サービスを実行すると、すべて正常に動作します。

評価サービス:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class EvalService : IEvalService
{
    Dictionary<string, JobPhaseTimer> jobTimers = new Dictionary<string, JobPhaseTimer>();

    public void SubmitEntry(ENBO.Jobs.Job job, ENBO.Jobs.JobDetail jobDetail, ENBO.TimeLogs.TimeLog timeLog, ENBO.Users.User user, ENBO.Utilities.EntryType entryType, JobPhase jobPhase)
    {
        if (entryType == EntryType.Active)
        {
            JobPhaseTimer timer = new JobPhaseTimer();
            timer.UID = job.ID + "_" + jobPhase.ID;
            timer.JobID = job.ID;
            timer.JobDetailID = jobDetail.ID;
            timer.PhaseID = jobPhase.ID;
            timer.StartTime = DateTime.Now;
            timer.Stopwatch.Start();
            jobTimers.Add(timer.UID, timer);

            TimeLog log = new TimeLog();
            log.JobID = job.ID;
            log.PhaseID = jobPhase.ID;
            log.UserID = user.ID;
            log.DateEntry = DateTime.Now;
            log.EntryType = EntryType.Active;

            if (log.AddNewTimeLog())
            {
                //Do something
            }
        }
        else if (entryType == EntryType.Paused)
        {
            JobPhaseTimer timer = jobTimers[job.ID + "_" + jobPhase.ID];
            timer.Stopwatch.Stop();

            TimeLog log = new TimeLog();
            log.JobID = job.ID;
            log.PhaseID = jobPhase.ID;
            log.UserID = user.ID;
            log.DateEntry = DateTime.Now;
            log.EntryType = EntryType.Paused;

            if (log.AddNewTimeLog())
            {
                //Do something
            }
        }
    }
}

IEvalService.cs(役務契約)

[ServiceContract]
public interface IEvalService
{
    [OperationContract]
    void SubmitEntry(Job job, JobDetail jobDetail, TimeLog timeLog, User user, EntryType entryType, JobPhase jobPhase);
}

Eval.svcマークアップ :

<%@ ServiceHost Language="C#" Debug="true" Service="EvalServiceLibary.Eval" %>

Web.config:

<?xml version="1.0"?>
<configuration>

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>
    <services>
      <service name="EvalServiceLibary.EvalService">
        <endpoint address="" behaviorConfiguration="" binding="webHttpBinding"
      contract="EvalServiceLibary.IEvalService" />
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
      contract="EvalServiceLibary.IEvalService" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="EvalServiceSite.EvalAspNetAjaxBehavior">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

このエラーが発生する理由はありますか? Google で検索したところ、いくつかのページに出くわしましたが、何も機能していないようです。

ありがとう!

4

15 に答える 15

78

Eval.svcファイルの次の行を次のように変更します。

<%@ ServiceHost Language="C#" Debug="true" Service="EvalServiceLibary.Eval" %> 

に:

<%@ ServiceHost Language="C#" Debug="true" Service="EvalServiceLibary.EvalService" %>
于 2014-05-12T09:42:30.037 に答える
39

バイナリ ファイルが「.svc」ファイルの「bin」サブディレクトリにあることを確認します

于 2015-04-28T15:31:55.663 に答える
19

この正確な問題に直面しました。マークアップの Service="Namespace.ServiceName" タグを変更して (xxxx.svc を右クリックし、ビジュアル スタジオで [マークアップの表示] を選択)、xxxx.svc.cs ファイルに使用した名前空間と一致するようにすると、問題は解決しました。

于 2015-09-10T14:41:00.937 に答える
11

Eval.svc.cs では、名前空間を Eva​​lServiceSite ではなく EvalServiceLibary に変更する必要があることがわかりました。

于 2013-07-11T12:00:20.147 に答える
6
  1. IIS アプリケーションを作成する場合、/binまたは/App_Codeフォルダのみが IIS アプリケーションのルート ディレクトリにあります。/binしたがって、すべてのコードをルートまたは/App_codeディレクトリに置くことを忘れないでください ( http://blogs.msdn.com/b/chrsmith/archive/2006/08/10/wcf-service-nesting-in-iis.aspxを参照)。

  2. サービス名とコントラクトにフル ネーム (例: namespace.ClassName) が含まれていること、およびサービス名とインターフェイスが web.config のサービス タグの name 属性とエンドポイントのコントラクトと同じであることを確認してください。

于 2016-01-05T20:02:50.530 に答える
4

私は自分でこの問題にぶつかっただけで、これもネット上の他の回答も私の問題を解決しませんでした。私にとっては、仮想ディレクトリが別のソース管理サーバーの別のブランチに作成され (基本的に、TFS 2010 から 2013 にアップグレードしました)、ソリューションがそのマッピングを何らかの形で記憶していたという奇妙なものでした。

とにかく、サービス プロジェクトの [プロパティ] で [仮想ディレクトリの作成] ボタンをもう一度クリックしました。別のフォルダーにマップされているというメッセージが表示され、更新したいと思います。はいをクリックすると、問題は解決しました。

于 2015-03-06T12:43:16.993 に答える
3

サービスの出力パスを変更しました。binサービスプロジェクトのフォルダー内にある必要があります。出力パスを に戻すとbin、機能しました。

于 2015-06-26T19:16:47.767 に答える
0

これは古いバグですが、「New \ Project..」で作成されてからほとんど変更されていない Web サービスで今日遭遇しました。

私の場合、この問題はIService.cs次の内容を含む " " ファイルが原因でした:

<%@ ServiceHost Language="C#" Debug="true" Service="JSONWebService.Service1.svc" CodeBehind="Service1.svc.cs" %>

Service属性の値.svcの末尾に " " が含まれていることに注意してください。

これはあるべきではありません。

これらの 4 文字を削除すると、この問題は解決しました。

<%@ ServiceHost Language="C#" Debug="true" Service="JSONWebService.Service1" CodeBehind="Service1.svc.cs" %>

Visual Studio の外部からこのファイルを開く必要があることに注意してください。

Visual StudioService1.csのソリューション エクスプローラーには 1 つのファイルが表示されますが、変更できるのは のみで、ファイルは変更Service1.svc.csできませService1.svc

于 2015-08-13T11:40:42.737 に答える
0

私も同じ問題を抱えていました。意図的に私のビルド出力パスは「..\bin」であり、ビルド出力パスを「\bin」に設定すると機能します。

于 2015-09-10T03:24:26.880 に答える
0

私の場合、「アプリケーションに変換」をiisの間違ったフォルダーに行いました。私のアプリケーションは、あるべき場所のサブフォルダーに設定されていました。

于 2015-06-05T10:09:22.460 に答える
0

Visual Studio の現在のビルド構成をデバッグ以外に設定したときに、このエラーが発生しました。

于 2015-07-23T06:09:31.307 に答える