【问题标题】:Argument Exception was unhandled (Entity Framework, WCF)参数异常未处理(实体框架,WCF)
【发布时间】:2016-05-22 15:13:38
【问题描述】:

我创建了一个基本的 WCF 服务。它在下面显示的行引发了异常。

  ServiceHost host = new ServiceHost(typeof(MyApplication.ITransactionService1));

System.ServiceModel.dll 中出现“System.ArgumentException”类型的未处理异常 附加信息:ServiceHost 仅支持类服务类型。

【问题讨论】:

  • ITransactionService1 长什么样子?
  • 我认为你需要传递类似typeof(MyApplication.ConcreteTransactionService) 的东西看起来你得到的是接口的类型而不是实现。
  • @mike 只是一个接口而已.. public interface ITransactionService1 { [OperationContract] [FaultContract(typeof(MyException))] [TransactionFlow(TransactionFlowOption.Allowed)] void InsertData(int id, string name) ; } 公共类 MyException { [DataMember] 公共字符串 ErrorText { 获取;放; } }

标签: c# wcf entity-framework-4 argumentexception


【解决方案1】:

ServiceHost Constructor (Type, Uri[]) 需要具体类型,而不是接口。

假设ITransactionService1 是您的服务合同并且您已经在TransactionService1 中实现了它:

namespace MyApplication
{

    [ServiceContract]
    public interface ITransactionService1
    {

        [OperationContract]
        int DoSomething(string arg);
    }

    public class TransactionService1 : ITransactionService1
    {

        // Implementation logic
    }
}

你会通过MyApplication.TransactionService1:

ServiceHost host = new ServieHost(typeof(MyApplication.TransactionService1));

【讨论】:

  • 成功了.. 谢谢 :)
  • 这会引发TransactionService1 is not attributed with ServiceContractAttribute 错误。并且需要将ServiceContract 从接口移动到TransactionService1 类定义。
猜你喜欢
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
相关资源
最近更新 更多