【问题标题】:WCF Host application by add service reference?WCF Host 应用程序通过添加服务引用?
【发布时间】:2012-02-17 10:23:59
【问题描述】:

我创建了一个带有一些端点(带有 mex 端点)的 WCF 服务。 例如,如果我现在创建一个控制台主机并将其放在我的主目录中:

 ServiceHost host = new ServiceHost(typeof(HelloWorld));

 host.Open();

 Console.WriteLine("The service is ready at!");
 foreach (ServiceEndpoint se in host.Description.Endpoints)
          Console.WriteLine(se.Address.ToString());
      Console.WriteLine("Press <Enter> to stop the service.");
 Console.ReadLine();

// Close the ServiceHost.
host.Close();

是否可以通过添加服务引用在主机端生成 app.config,还是我需要自己创建应用配置并使其类似于 wcf 服务端点?

除此之外,局域网上的其他计算机怎么可能访问这台主机?

(PS 这到底是什么意思:一个服务可能包含一个 mex 端点,它获取服务的 ABC 并返回 WSDL。(现在是不可理解的部分)在获得 WSDL 后,会生成两个工件:项目语言中的代理类和 app.config 文件。代理类反映端点操作的签名,以便客户端代码可以简单地“调用”端点。代理接口不必与服务签名,但代理需要确保传输给服务的消息正是服务合同所描述的。(OK WHAT?)

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

    1) 您必须在 app.config 中指定端点(A-Address、B-Binding、C-contract),并且此 app.config 必须与您的主机应用程序(在这种情况下为您的控制台应用程序)一起使用 2)如果某些客户端运行Visual Studio的命令提示符并运行此服务,则可以在局域网中识别此服务-

    SvcUtil http://localhost/MyService/MyService.svc /out:c:\Proxy.cs(示例命令根据您的情况更改各种值...)

    这里 Proxy.cs 包含 Proxy 类,客户端应该将这个添加到解决方案中并调用代理类的方法,在这个 Proxy.cs 所在的同一目录下,你会找到 1 个 .config 文件,粘贴这个文件的内容到客户端的 app.config。 3) 需要 MEX 端点来交换元信息。

    【讨论】:

    • 是否需要配置服务app.config和宿主app.config?
    • 你需要配置两个.config,一个是上面第1点提到的主机应用程序,第二个是你通过svcutil获得的,第二个需要配置客户端。
    【解决方案2】:

    在您的第一个问题中,当您说“主机”时,我假设您的意思是“客户”。为此,您应该在代码中的 ServiceHost 的构造函数中放置一个 Uri。 例如。

    ServiceHost host = new ServiceHost(typeof(HelloWorld), new Uri("http://localhost:1234/helloworld", UriKind.Absolute)); 
    

    然后右键单击您的项目并转到调试/启动新实例。现在您的服务已在给定的 Uri 下启动并运行。在 Visual Studio 中,转到顶部的“调试”菜单并选择“全部分离”。现在您的应用程序与该服务仍在运行。您现在可以转到您的客户项目并像以前一样添加服务引用。只需在“添加服务引用”对话框中填写 Uri。

    关于你的最后一个问题。这只是意味着 Visual Studio 为您的服务引用创建了一个本地文件,并且作为开发人员,您应该使用该客户端类,就好像它是服务本身并且它可以工作:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多