找不到服务端点?

时间:2012-03-25 21:54:06

标签: c# .net wcf rest

尝试从我的服务中获取时,似乎遇到了未找到服务端点的问题。

如果我尝试http://localhost:8000/hello/help我应该看到<string>You entered help <string>,但我只获得了无端点?我根本没有触及我的配置文件,我只是从一个控制台应用程序托管。

主机:

namespace Host
{
    class Program
    {
        static void Main(string[] args)
        {
            WebHttpBinding binding = new WebHttpBinding();
            WebServiceHost host =
            new WebServiceHost(typeof(Service1));
            host.AddServiceEndpoint(typeof(IService1),
            binding,
            "http://localhost:8000/hello");
            host.Open();
            Console.WriteLine("Hello world service");
            Console.WriteLine("Press <RETURN> to end service");
            Console.ReadLine();
        }
    }
}

服务1:

namespace WcfServiceLibrary1
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in both code and config file together.
    public class Service1 : IService1
    {
        public string GetData(string value)
        {
            return string.Format("You entered: {0}", value);
        }

IService1:

[ServiceContract]
public interface IService1
{
    [WebGet(UriTemplate = "/{value}")]
    string GetData(string value);

2 个答案:

答案 0 :(得分:6)

从{value}中删除/并确保将其列为OperationContract。它应该是:

[WebGet(UriTemplate = "{value}")]
[OperationContract]

基本网址会以斜杠显示,所以你真的在当前代码中寻找http://localhost:8000/hello//help

答案 1 :(得分:0)

在黑暗中刺伤...默认情况下,不允许任意进程侦听网络端口。

安装IIS后,运行IIS的帐户将获得权限 - 如果您希望其他帐户(控制台应用程序,Windows服务)运行的其他应用程序能够侦听端口,则需要授予权限。< / p>

查看netsh add urlacl命令作为起点。