代码之家  ›  专栏  ›  技术社区  ›  pc1oad1etter

在控制台应用程序中托管WCF REST服务时,查找协定名称时出错

  •  1
  • pc1oad1etter  · 技术社区  · 14 年前

    我有一个从Windows服务(.NET 3.5)工作的WCF REST服务。为了使构建和调试更容易,我想从控制台运行它。当我这样做时,我正在控制台应用程序中设置端点。当我创建一个端点时,它会失败,并出现以下错误: 在服务“System.RuntimeType”实现的合同列表中找不到合同名称“IRestService”。

    我的接口没有附加[ServiceContract]:

    namespace RestServiceLibrary
    {
        [ServiceContract]
        public interface IRestService
        ...
    

    这是控制台应用程序:

    namespace RestServiceConsole
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                WebServiceHost2 webHost = new WebServiceHost2(typeof(RestService), new Uri("http://localhost:8082"));
                ServiceEndpoint ep = webHost.AddServiceEndpoint(typeof(IRestService), new WebHttpBinding(), "");
                ServiceDebugBehavior stp = webHost.Description.Behaviors.Find<ServiceDebugBehavior>();
                stp.HttpHelpPageEnabled = false;
                webHost.Open();
                Console.WriteLine("Service is up and running");
                Console.WriteLine("Press enter to quit ");
                Console.ReadLine();
                webHost.Close();
    
            }
        }
    }
    

    为什么我会得到这个错误?我怎么修?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Darrel Miller    14 年前

    WebServiceHost2 webHost = new WebServiceHost2(typeof(RestService), new Uri("http://localhost:8082"));
    

    WebServiceHost2 webHost = new WebServiceHost2(typeof(RestService), true, new Uri("http://localhost:8082"));
    

        2
  •  0
  •   John Saunders    14 年前

    ServiceEndpoint ep = webHost.AddServiceEndpoint(typeof(IRestService), 
        new WebHttpBinding(), ""); 
    

    ServiceEndpoint ep = webHost.AddServiceEndpoint(typeof(RestServiceLibrary.IRestService), 
        new WebHttpBinding(), ""); 
    

    http://aspdotnethacker.blogspot.com/2010/06/contract-name-could-not-be-found-in.html