VS2010,WCF服务无法启动

时间:2011-05-05 11:55:54

标签: wcf visual-studio-2010

我将逐步完成目前所做的工作,如下所示:

  1. 创建了空解决方案
  2. 添加了一个网站WCFService
  3. 从网站
  4. 删除了服务和服务
  5. 将WCF服务库项目添加到解决方案
  6. 将结束点添加到web.config
  7. 在app.config中做了同样的事情
  8. 在Web应用程序中添加了对服务库的引用
  9. ctrl + F5 9
  10. 我收到以下错误:

      

    异常详细信息:

      

    System.InvalidOperationException:The   类型   'Services.WFLedger.WF_API_Ledger',   作为服务属性提供   ServiceHost指令中的值,或   在配置元素中提供   system.serviceModel / serviceHostingEnvironment / serviceActivations   无法找到。

    来源错误:

      

    生成了未处理的异常   在执行当前   网络请求。有关的信息   异常的起源和位置   可以使用例外来识别   堆栈跟踪下面。

    堆栈追踪:

      

    [InvalidOperationException:类型   'Services.WFLedger.WF_Ledger',   作为服务属性提供   ServiceHost指令中的值,或   在配置元素中提供   system.serviceModel / serviceHostingEnvironment / serviceActivations   无法找到。]
      System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(字符串   constructorString,Uri []   baseAddresses)+654
      System.ServiceModel.HostingManager.CreateService(字符串   normalizedVirtualPath)+1439
      System.ServiceModel.HostingManager.ActivateService(字符串   normalizedVirtualPath)+45
      System.ServiceModel.HostingManager.EnsureServiceAvailable(字符串   normalizedVirtualPath)+647

         

    [ServiceActivationException:The   服务'/WFLedger/WF_Ledger.svc'   由于a无法激活   编译期间的异常。该   异常消息是:类型   'Services.WFAPILedger.WF_API_Ledger',   作为服务属性提供   ServiceHost指令中的值,或   在配置元素中提供   system.serviceModel / serviceHostingEnvironment / serviceActivations   无法找到..]
      System.Runtime.AsyncResult.End(IAsyncResult的   结果)+437
      System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult的   结果)+188
      System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication的   context,String   routeServiceVirtualPath,Boolean   flowContext,Boolean ensureWFService)   +230 System.ServiceModel.Activation.HttpModule.ProcessRequest(Object   发件人,EventArgs e)+360
      System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +213 System.Web.HttpApplication.ExecuteStep(IExecutionStep   步,布尔& completedSynchronously)   76

    这真的让我发疯! 为什么我会收到此错误? 如果您需要更多信息,请告诉我,以便我提供给您 提前感谢一百万

8 个答案:

答案 0 :(得分:37)

查看网站项目中的WF_Ledger.svc文件。它应该只包含一行。将存在包含“Services.WFAPILedger.WF_API_Ledger”的Service属性。 WCF正在寻找“Services.WFAPILedger.WF_API_Ledger”类,但没有找到它。名称空间和类名称需要存在于网站项目中,或者在您尝试设置时作为参考。您需要编辑该Service属性以匹配WCF服务库项目中的服务实现类。

答案 1 :(得分:5)

请检查.svc文件是否已提供,且格式如下。

 <% @ServiceHost Language=C# Debug="true" Service="MyService" CodeBehind="~/App_Code/Service.cs" %>

它的所有一行和文件应该不包含任何其他内容。

答案 2 :(得分:2)

尝试添加新的默认服务,然后检查新添加的工作正常。 如果是,请检查提供的web.config端点合同名称, 并在.svc文件中检查后面正确提到的代码。

答案 3 :(得分:1)

在.svc文件中服务参数应该包含名称空间,后跟类名,即它的格式应为mynamespace.myservice

答案 4 :(得分:1)

构建WCF项目并重试。由于bin文件夹中没有DLL,可能会发生此错误。

对我来说,建立并再次尝试解决它。​​

答案 5 :(得分:0)

甚至确保在.svc文件指令中,“service”属性的值是完全限定的类名,例如:如果您的命名空间类似于“ns1.ns2.ns3.ClassName”(其中ns1,ns2, ns3是名称空间)。

答案 6 :(得分:0)

可以通过在* .svc.cs文件中重命名类名而不在* .svc标记中重命名来生成此错误。

解决此问题的两种方法:

  • 将班级名称重命名为原始名称。
  • 重命名标记中的服务引用(右键单击* .svc文件,然后单击“查看标记”*)。

您的标记代码如下所示:

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

*注意:我在VS2017中遇到此问题,不知道该选项是否在VS2010中。

答案 7 :(得分:0)

检查调用函数的Iservice类中的函数名和参数,并检查函数定义的服务类。