none
WCF能以wpf作为宿主么 RRS feed

  • 问题

  • 今天用wpf做了一个wcf的宿主,但是客户端不管怎样弄都连不上服务端,不清楚为什么,

    有哪位仁兄搞出来了的,请告诉下小弟,小弟在这里拜谢了~~~~~

    我的config配置为:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
        <add key="powerFile" value="D:\authz"/>
        <add key="userFile" value="D:\authz"/>
      </appSettings>
      <system.serviceModel>
        <services>
          <!--设置service信息-->
          <!--给service命名-->
          <service name="ServiceContract.service.SVNOperater" behaviorConfiguration="basebehavior">
            <!--设置主机信息-->
            <host>
              <!--设置链接地址信息-->
              <baseAddresses>
                <!--设置详细链接地址-->
                <add baseAddress="http://localhost:1365/Server" />
              </baseAddresses>
            </host>
            <!--endPoint设置 地址(Address)、绑定(Binding)和契约(Contract)-->
            <endpoint address=""
                      binding="wsHttpBinding"
                      bindingConfiguration="wsHttpBindingName"
                      contract="ServiceContractDeul.Contract.SVNOperaterDAL" >
              <!--设置可访问用户方式-->
              <!--<identity>
                <dns value="localhost"/>
              </identity>-->
            </endpoint>
          </service>
        </services>

        <!--设置绑定访问方式-->
        <bindings>
          <wsHttpBinding>
            <!--设置绑定名-->
            <binding name="wsHttpBindingName">
              <!--安全验证为None-->
              <security mode="None" >
                <!--安全验证,不加无法获得元数据-->
                <message clientCredentialType="None" algorithmSuite="Default"/>
              </security>
            </binding>
          </wsHttpBinding>
        </bindings>

        <!--服务器端行为定义-->
        <behaviors>
          <!--服务器行为-->
          <serviceBehaviors>
            <!--行为名-->
            <behavior name="basebehavior">
              <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点-->
              <serviceMetadata httpGetEnabled="true"/>
              <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息-->
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>

    • 已编辑 NoRoad 2011年1月24日 8:21 增加config设置
    2011年1月24日 8:02

答案

全部回复

  • 可以以WPF应用作宿主程序。

    你这里什么错误?能访问服务的WSDL元数据吗?

     


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2011年1月24日 13:32
    版主
  • 不能访问到服务的wsdl元数据,但是服务端可以正常的启动;但是客户端就是找不到
    2011年1月25日 0:09
  • 不能访问到服务的wsdl元数据,但是服务端可以正常的启动;但是客户端就是找不到

    加一下这个配置


      <endpoint address="mex"
      binding="mexHttpBinding"
      contract="IMetadataExchange" />
    在实验一下


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    • 已标记为答案 NoRoad 2012年1月10日 9:28
    2011年1月25日 14:50
    版主
  • 我加过了的,没有起作用,客户端还是找不到服务,

    但是用其他的比如说是win32或者是winform 开启服务就能被找到,不知道什么原因

    2011年1月26日 10:37
  • 我加过了的,没有起作用,客户端还是找不到服务,

    但是用其他的比如说是win32或者是winform 开启服务就能被找到,不知道什么原因


    你Host Open()以后,有加个代码阻塞线程吗?在Console都是加Console.Read();

    阻塞当前的代码执行,你是不是直接执行结束了。

     


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    • 已标记为答案 Mog Liang 2011年1月31日 2:21
    • 取消答案标记 NoRoad 2011年2月15日 7:01
    2011年1月26日 15:36
    版主
  • 我是用wpf作为宿主来开启服务  但是客户端找不到;

    如果宿主是win32或者winform的 客户端就能找到

    2011年1月27日 0:05
  • 我是用wpf作为宿主来开启服务  但是客户端找不到;

    如果宿主是win32或者winform的 客户端就能找到


    你把HOst的那段代贴出来
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2011年1月27日 8:06
    版主
  • 我是用wpf作为宿主来开启服务  但是客户端找不到;

    如果宿主是win32或者winform的 客户端就能找到


    你把HOst的那段代贴出来
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛
    Windows Azure中文技术论坛


    namespace Host
    {
        /// <summary>
        /// Window1.xaml 的交互逻辑
        /// </summary>
        public partial class Window1 : Window
        {
            ServiceHost host = null;

            public Window1()
            {
                InitializeComponent();
            }

            private void btnExecute_Click(object sender, RoutedEventArgs e)
            {
                using (host = new ServiceHost(typeof(SVNOperater)))
                {
                    host.Opened += delegate
                    {
                        txtExecuteInfo.Text = "服务已经启动!可点击‘停止并关闭’按钮来结束任务...";
                    };

                    host.Open();

                    btnExecute.Visibility = Visibility.Hidden;
                    btnStop.Visibility = Visibility.Visible;
                }
            }

            private void btnStop_Click(object sender, RoutedEventArgs e)
            {
                if (host != null)
                    host.Close();

                this.Close();
            }

            private void Window_Closed(object sender, EventArgs e)
            {
                if (host != null)
                    host.Close();

                this.Close();
            }
        }
    }

     

    这个就是我的host代码

    2011年2月14日 4:26
  • 我是用wpf作为宿主来开启服务  但是客户端找不到;

    如果宿主是win32或者winform的 客户端就能找到


    你把HOst的那段代贴出来
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛
    Windows Azure中文技术论坛


    namespace Host
    {
        /// <summary>
        /// Window1.xaml 的交互逻辑
        /// </summary>
        public partial class Window1 : Window
        {
            ServiceHost host = null;

            public Window1()
            {
                InitializeComponent();
            }

            private void btnExecute_Click(object sender, RoutedEventArgs e)
            {
                using (host = new ServiceHost(typeof(SVNOperater)))
                {
                    host.Opened += delegate
                    {
                        txtExecuteInfo.Text = "服务已经启动!可点击‘停止并关闭’按钮来结束任务...";
                    };

                    host.Open();

                    btnExecute.Visibility = Visibility.Hidden;
                    btnStop.Visibility = Visibility.Visible;
                }
            }

            private void btnStop_Click(object sender, RoutedEventArgs e)
            {
                if (host != null)
                    host.Close();

                this.Close();
            }

            private void Window_Closed(object sender, EventArgs e)
            {
                if (host != null)
                    host.Close();

                this.Close();
            }
        }
    }

     

    这个就是我的host代码


    你服务Mex终结点地址是什么?
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2011年3月4日 12:41
    版主