Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法连接到自托管WCF服务_C#_Wcf_Soap_Windows Services - Fatal编程技术网

C# 无法连接到自托管WCF服务

C# 无法连接到自托管WCF服务,c#,wcf,soap,windows-services,C#,Wcf,Soap,Windows Services,我正在尝试构建一个相当基本的WCFSOAPWeb服务,作为一个Windows服务自托管。Windows服务本身已在我的计算机上启动并运行--我无法通过Visual Studio或web浏览器在本地访问它 相关的C#代码如下。假设MyDummyService实现合同IDummyService: public class Program : ServiceBase { private ServiceHost host = null; private readonly Uri base

我正在尝试构建一个相当基本的WCFSOAPWeb服务,作为一个Windows服务自托管。Windows服务本身已在我的计算机上启动并运行--我无法通过Visual Studio或web浏览器在本地访问它

相关的C#代码如下。假设
MyDummyService
实现合同
IDummyService

public class Program : ServiceBase
{
    private ServiceHost host = null;
    private readonly Uri baseAddress = new Uri("http://localhost:8000/DummyAPI");

    public static readonly ILog log = LogManager.GetLogger(typeof(Program));
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    public static void Main(string[] args)
    {
        ServiceBase.Run(new Program());
    }

    public Program()
    {
        this.ServiceName = "DummyService";
    }

    protected override void OnStart(string[] args)
    {
        log.Info("Starting service");

        try
        {
            base.OnStart(args);

            host = new ServiceHost(typeof(MyDummyService), baseAddress);

            host.Open();
        }
        catch (Exception ex)
        {
            log.Error(ex.ToString());
        }
        finally
        {
            if (host != null)
                ((IDisposable)host).Dispose();
        }
    }

    protected override void OnStop()
    {
        log.Info("Stopping service");
        base.OnStop();
        host.Close();
    }
}
当我访问

http://localhost:8000/DummyAPI

在web浏览器中,我得到了一个404。显而易见的第一个问题:我在上面搞砸了什么

web.config
名称空间(或类似名称空间的东西)让我有点困惑。我可以在现场安全地编写哪些内容,以及哪些内容需要反映C类名称空间?

一本好的入门书

服务元素上的name属性必须是实现服务的类型的完全限定名

endpoint元素上的contract属性必须是服务实现的接口的完全限定名

如果满足这两个条件,那么ServiceHost应该查找并应用应用程序配置中指定的配置

如果您是WCF新手,一个简单的入门方法是使用WCF服务配置编辑器,该编辑器可从Visual Studio的“工具”菜单中获得。

这是一本不错的入门书

服务元素上的name属性必须是实现服务的类型的完全限定名

endpoint元素上的contract属性必须是服务实现的接口的完全限定名

如果满足这两个条件,那么ServiceHost应该查找并应用应用程序配置中指定的配置


如果您是WCF新手,一个简单的入门方法是使用WCF服务配置编辑器,该编辑器可从Visual Studio的“工具”菜单中获得。

看起来您正在使用Start方法处理ServiceHost,这样可以有效地避免运行ServiceHost

finally
{
    if (host != null)
        ((IDisposable)host).Dispose();
}

看起来您正在使用Start方法处理ServiceHost,这会使您无法运行ServiceHost

finally
{
    if (host != null)
        ((IDisposable)host).Dispose();
}

有一种东西叫做追踪,有一种东西叫做追踪,你明白了;)在发育过程中,注意力稍微集中一点是值得注意的。集中在那里,它只是指向所有错误的地方。笨蛋。谢谢。你明白了;)在发育过程中,注意力稍微集中一点是值得注意的。集中在那里,它只是指向所有错误的地方。笨蛋。谢谢
finally
{
    if (host != null)
        ((IDisposable)host).Dispose();
}