dyn*_*ser 27 c# wcf wcf-binding
当我Eval.svc在Visual Studio 2012中右键单击并在浏览器中查看时,我得到以下内容 -
无法找到类型'EvalServiceLibary.Eval',作为ServiceHost指令中的Service属性值提供,或者在配置元素system.serviceModel/serviceHostingEnvironment/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
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
IEvalService.cs (服务合约)
[ServiceContract]
public interface IEvalService
{
[OperationContract]
void SubmitEntry(Job job, JobDetail jobDetail, TimeLog timeLog, User user, EntryType entryType, JobPhase jobPhase);
}
Run Code Online (Sandbox Code Playgroud)
Eval.svc 加价:
<%@ ServiceHost Language="C#" Debug="true" Service="EvalServiceLibary.Eval" %>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
任何想法为什么我收到此错误?我搜索过谷歌,看到几页,但似乎没什么用.
谢谢!
use*_*181 66
更改Eval.svc文件中的以下行:
<%@ ServiceHost Language="C#" Debug="true" Service="EvalServiceLibary.Eval" %>
Run Code Online (Sandbox Code Playgroud)
至:
<%@ ServiceHost Language="C#" Debug="true" Service="EvalServiceLibary.EvalService" %>
Run Code Online (Sandbox Code Playgroud)
小智 17
面对这个确切的问题.当我在标记中更改Service ="Namespace.ServiceName"标记(右键单击xxxx.svc并在visual studio中选择View Markup)以匹配我用于xxxx.svc.cs文件的命名空间时,问题得以解决
小智 6
创建 IIS 应用程序时,只有/bin或/App_Code文件夹位于IIS 应用程序的根目录中。因此,请记住将所有代码放在根目录/bin或/App_code目录中(请参阅http://blogs.msdn.com/b/chrsmith/archive/2006/08/10/wcf-service-nesting-in-iis.aspx)。
确保服务名称和合同包含全名(例如namespace.ClassName),服务名称和接口与web.config中的服务标签和端点合同的名称属性相同。
我自己就遇到了这个问题,这个问题和网上的任何其他答案都没有解决我的问题。对我来说,这是一个奇怪的问题,虚拟目录是在另一个源代码控制服务器的不同分支上创建的(基本上,我们从 TFS 2010 升级到 2013),并且解决方案以某种方式记住了它的映射。
不管怎样,我在服务项目的属性中再次单击了“创建虚拟目录”按钮。它给了我一条关于被映射到不同文件夹的消息,我想更新它。我点击“是”,问题就解决了。