Csharp/C#教程:WCF服务,无法找到作为服务属性值…提供的类型分享


WCF服务,无法找到作为服务属性值…提供的类型

当我在Visual Studio 2012中右键单击Eval.svc并在浏览器中查看时,我得到以下内容 –

无法找到类型’EvalServiceLibary.Eval’,作为ServiceHost指令中的Service属性值提供,或者在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供。

当我从测试客户端运行WCF服务时,一切正常。

评估服务:

 [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] public class EvalService : IEvalService { Dictionary jobTimers = new Dictionary(); 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标记:

  

Web.config

                                        

任何想法为什么我收到此错误? 我搜索过谷歌,看到几页,但似乎没什么用。

谢谢!

从以下位置更改Eval.svc文件中的以下行:

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

至:

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

确保二进制文件位于“.svc”文件的“bin”子目录下

面对这个确切的问题。 当我更改Markup中的Service =“Namespace.ServiceName”标记(右键单击xxxx.svc并在visual studio中选择View Markup)以匹配我用于xxxx.svc.cs文件的命名空间时,问题得以解决

事实certificate,Eval.svc.cs需要将其名称空间更改为EvalServiceLibary,而不是EvalServiceSite。

我自己就是这个问题,网上的这个或其他任何答案都没有解决我的问题。 对我来说,这是一个奇怪的虚拟目录,其中虚拟目录已在另一个源控制服务器的不同分支上创建(基本上,我们从TFS 2010升级到2013),解决方案以某种方式记住了它的映射。

无论如何,我再次在服务项目的属性中单击“创建虚拟目录”按钮。 它给了我一个关于被映射到不同文件夹的消息,我想更新它。 我点击了是,这解决了问题。

  1. 创建IIS应用程序时,只有/bin/App_Code文件夹位于IIS应用程序的根目录中。 所以请记住将所有代码放在root /bin/App_code目录中(参见https://blogs.msdn.com/b/chrsmith/archive/2006/08/10/wcf-service-nesting-in-iis。 aspx )。

  2. 确保服务名称和合同包含全名(例如namespace.ClassName ),服务名称和接口与web.config中服务标签和端点合同的name属性相同。

我改变了服务的输出路径。 它应该在服务项目的bin文件夹中。 一旦我将输出路径放回bin ,就可以了。

右键单击解决方案资源管理器中的.svc文件,然后单击“ View Markup

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

更新您所指的服务引用。

仔细检查项目.net版本。 使用不同.net版本互相引用的项目会导致问题。

在我的情况下,我做了一个“转换为应用程序”到iis上的错误文件夹。 我的应用程序设置在应该存在的子文件夹中。

当我将Visual Studio中的当前构建配置设置为除Debug之外的其他东西时,我遇到了这个错误。

我也有同样的问题。 故意我的构建输出路径是“.. bin”,当我将构建输出路径设置为“ bin”时,它适用于我。

这是一个老错误,但我今天在一个Web服务上遇到它,自从通过“New Project ..”创建以来几乎没有改变过。

对我来说,这个问题是由包含以下内容的“ 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 Studio在解决方案资源管理器中显示一个文件Service1.cs ,但只允许您更改Service1.svc.cs而不是 Service1.svc文件。

上述就是C#学习教程:WCF服务,无法找到作为服务属性值…提供的类型分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1008480.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐