【问题标题】:VS2010, WCF Service wouldn't startVS2010,WCF服务无法启动
【发布时间】:2011-05-05 11:55:53
【问题描述】:

我将按照以下步骤逐步完成到目前为止所做的事情:

  1. 创建了空解决方案
  2. 添加了网站 WCFService
  3. 从网站上删除了 Service 和 IService
  4. 向解决方案添加了 WCF 服务库项目
  5. 为 web.config 添加了端点
  6. 在 app.config 中做了同样的事情
  7. 在 Web 应用程序中添加了对服务库的引用
  8. ctrl + F5 9

我收到以下错误:

“/WFLedger”中的服务器错误 应用。方式 'Services.WFLedger.WF_Ledger', 作为服务属性提供 ServiceHost 指令中的值,或 在配置元素中提供 system.serviceModel/serviceHostingEnvironment/serviceActivations 找不到。说明:一个 期间发生未处理的异常 当前网络的执行 要求。请查看堆栈跟踪 有关错误的更多信息 以及它起源于代码的位置。

异常详情:

System.InvalidOperationException: 类型 '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(字符串 构造函数字符串,Uri[] 基本地址)+654
System.ServiceModel.HostingManager.CreateService(字符串 标准化虚拟路径)+1439
System.ServiceModel.HostingManager.ActivateService(字符串 normalizedVirtualPath) +45
System.ServiceModel.HostingManager.EnsureServiceAvailable(字符串 normalizedVirtualPath) +647

[服务激活异常: 服务'/WFLedger/WF_Ledger.svc' 无法激活,因为 编译时出现异常。这 异常消息是:类型 '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 上下文,字符串 routeServiceVirtualPath,布尔值 flowContext,布尔确保WFService) +230 System.ServiceModel.Activation.HttpModule.ProcessRequest(对象 发件人,EventArgs e) +360 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +213 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean & completedSynchronously) +76

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

【问题讨论】:

    标签: wcf visual-studio-2010


    【解决方案1】:

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

    【讨论】:

    • 谢谢一百万,问题是我 .svc 文件中的类名是错误的,愚蠢的问题但很烦人
    • 该死,我在类名中有'e'而不是'a'。血腥BUG
    【解决方案2】:

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

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

    只有一行,文件应该不包含其他内容。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        在 .svc 文件中,服务参数应包括命名空间,后跟类名,即格式为 mynamespace.myservice

        【讨论】:

          【解决方案5】:

          构建 WCF 项目并重试。此错误可能是因为 bin 文件夹中没有 DLL。

          对我来说,构建并再次尝试解决了它。

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

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

              解决这个问题的两种方法:

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

              您的标记代码如下所示:

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

              *注意:我在VS2017中遇到过这个问题,不知道VS2010中是否有这个选项。

              【讨论】:

                【解决方案8】:

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-02-21
                  • 2020-11-05
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-01-25
                  相关资源
                  最近更新 更多