it-swarm.dev

لا يمكن العثور على خدمة WCF ، النوع المقدم كقيمة سمات الخدمة ...

عندما أنقر بزر الماوس الأيمن على Eval.svc ضمن Visual Studio 2012 وعرضه في المتصفح ، أحصل على ما يلي -

لا يمكن العثور على النوع "EvalServiceLibary.Eval" ، الذي يتم توفيره كقيمة سمة Service في توجيه ServiceHost ، أو تم توفيره في نظام عنصر التكوين. الخدمة/النموذج HostingEnvironment/serviceActivations.

عندما أقوم بتشغيل خدمة 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 وشاهدت عدة صفحات ، لكن لا شيء يبدو أنه يعمل.

شكر!

27
dynamicuser

تبين أن Eval.svc.cs بحاجة إلى تغيير مساحة الاسم الخاصة بها إلى EvalServiceLibary ، بدلاً من EvalServiceSite.

9
dynamicuser

غيّر السطر التالي في Eval.svc ملف من:

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

إلى:

<%@ ServiceHost Language="C#" Debug="true" Service="EvalServiceLibary.EvalService" %>
65
user3578181

تأكد من وجود ملفات ثنائية ضمن دليل فرعي "bin" لملف ".svc" الخاص بك

33
vasek

واجهت هذه القضية بالضبط. تم حل المشكلة عند تغيير الخدمة = علامة "Namespace.ServiceName" في العلامات (انقر بزر الماوس الأيمن xxxx.svc وحدد عرض العلامات في الاستوديو المرئي) لمطابقة مساحة الاسم التي استخدمتها لملف xxxx.svc.cs

17
TheCopyPaster
  1. عند إنشاء تطبيق IIS فقط ، يكون المجلد /bin أو /App_Code في الدليل الجذر للتطبيق IIS). لذا تذكر فقط وضع كل الشفرة في الدليل /bin أو /App_code (انظر http://blogs.msdn.com/b/chrsmith/archive/2006/08/ 10/صندوق رأس المال العامل الخدمة وتعشش في وiis.aspx ).

  2. تأكد من أن اسم الخدمة والعقد يحتويان على الاسم الكامل (على سبيل المثال namespace.ClassName) ، وأن اسم الخدمة وواجهة الخدمة مماثلان لسمة الاسم لعلامة الخدمة وعقد نقطة النهاية في web.config.

4
Venkata Deekshit Ganti

أنا فقط ضربت هذه المشكلة بنفسي ، ولم يحل هذا ولا أي من الإجابات الأخرى على الشبكة مشكلتي. بالنسبة لي كان هذا غريبًا حيث تم إنشاء الدليل الظاهري على فرع مختلف في خادم تحكم مصدر آخر (في الأساس ، قمنا بالترقية من TFS 2010 إلى 2013) وتذكر الحل بطريقة ما أنه يتم تعيينه.

على أي حال ، لقد قمت بالنقر فوق الزر "إنشاء دليل ظاهري" مرة أخرى ، في مشروع خصائص الخدمة. لقد أعطاني رسالة حول التعيين في مجلد مختلف وأود تحديثه. لقد نقرت نعم ، وهذا حل المشكلة.

4
Detail

لقد غيرت مسار إخراج الخدمة. يجب أن يكون داخل مجلد bin من مشروع الخدمة. بمجرد إعادة مسار الإخراج إلى bin ، نجح.

2
Gokul

انقر بزر الماوس الأيمن فوق ملف .svc في Solution Explorer وانقر فوق View Markup

 <%@ ServiceHost Language="C#" Debug="true" 
     Service="MyService.**GetHistoryInfo**" 
     CodeBehind="GetHistoryInfo.svc.cs" %>

قم بتحديث مرجع الخدمة في المكان الذي تشير إليه.

1
Joe

كان لي نفس المشكلة. تأكد من تضمين اسم التجميع في Factory خاصية في .svc الملف. ربما تحتاج إلى تنظيف IIS ذاكرة التخزين المؤقت إذا كنت قد قمت بإعادة تسمية اسم تجميع المشروع.

1
Jalal

كان لي أيضا نفس المشكلة. عمداً كان مسار إخراج البناء الخاص بي هو "..\bin" ، وهو يعمل لي عندما أقوم بتعيين مسار إخراج البناء على أنه "\ bin".

0
K.Kirivarnan

تحقق ضعف المشاريع. صافي الإصدارات. المشاريع التي تشير إلى بعضها البعض مع إصدارات .net المختلفة تسبب مشاكل.

0
Mehmet

في حالتي فعلت "تحويل إلى تطبيق" إلى مجلد خاطئ على IIS. تم تعيين طلبي في مجلد فرعي حيث كان يجب أن يكون.

0
Navy Seal

كان لدي هذا الخطأ عندما كان لدي تكوين الإنشاء الحالي في Visual Studio لتعيين شيء آخر غير Debug.

0
BineG