Skip to content
久久日记本
曾经年少爱追梦,一心只想往前飞
  • 首页
  • 博客
    • 博客历史
    • 主题
    • 个人文集
  • 关于
    • 正在读的书
    • 作品归档
    • 2018作品归档
    • 联系我
  • 友情链接
  • 留言板
❄
❅
❆
❄
❅
❆
❄
❅
❆
❄
.NET

WCF客户端调用时提示操作超时

Posted on 2013年7月1日 by 九九 / 1789 Views

学习WCF相关知识,写一段WCF的小代码,客户端调用本地写好的WCF时提示:”操作超时”,也按照网上的说法修改.

如:

1、首先保证客户端每次建立的连接在使用完成后进行关闭.即调用Close方法,否则此连接会在设置的会话后才自动关闭(该自动响应时间一般为10分钟,InactivityTimeOut属性),期间任何客户端也无法使用此服务.

2、可以增加默认连接连接数.配置文件如下:< serviceThrottling maxConcurrentCalls=”20″ maxConcurrentSessions=”20″ maxConcurrentInstances=”30″ />

说明:maxConcurrentCalls :最大并发数,默认为16;maxConcurrentSessions :最大的会话数,主要针对于PerSession的情况,默认为10;maxConcurrentInstances:最大实例数,默认为26

但真的解决不了问题.搞了半天总算找到了真正的原因.

下面小程序代码如下:

先在“引用”添加引用 System.ServiceModel;

类库 Iservice 中接口文件:ifly.cs

using System.ServiceModel;

namespace Iservice
{
    [ServiceContract]
    public interface ifly
    {
        [OperationContract]
        string peofly(string name);
    }
}

类库 service 中类文件:fly.cs

using System.ServiceModel;
using Iservice;

namespace service
{
    public class fly:ifly
    {
        public string peofly(string name)
        {
            return "name:" + name;
        }
    }
}

控制台应用程序 host 中Program.cs

using System.ServiceModel;
using Iservice;
using service;

namespace host
{
    class Program
    {
        static void Main(string[] args)
        {
            using(ServiceHost host=new ServiceHost(typeof(service.fly)))
            {
                host.Open();
                Console.WriteLine("Start...");
                Console.Read();
                host.Close();//这一步运行不到吧!!!
            }
        }
    }
}

在控制台应用程序 host 中添加 配置文件 App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>

    <services>
      <!--service 类库命名空间,fly 类名-->
      <service name="service.fly" behaviorConfiguration="MessageBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:1111/a"/>
          </baseAddresses>
        </host>
        <!--Iservice 类库命名空间,ifly 接口名-->
        <!--wsHttpBinding,这个binding可以认为是webservice的加强版WSE,设计的目的就是用于异构系统的交互(比如java)-->
        <endpoint address="" binding="wsHttpBinding" contract="Iservice.ifly"></endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MessageBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
          <!--这一行没用-->
          <!--<serviceThrottling maxConcurrentCalls="200" maxConcurrentSessions="1000" maxConcurrentInstances="50000"/>-->
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

生成之后 在 host\bin\Debug文件夹下 用“管理员权限”打开host.exe

在客户端 控制台应用程序中 test 引用服务

右键=>添加服务引用=>输入地址 http://localhost:1111/a,修改命名空间为 sr

test的Program.cs添加代码:

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            sr.iflyClient si = new sr.iflyClient();

            Console.Write(si.peofly("ls"));
            Console.Read();
        }
    }
}

将test设为启动项
Ctrl+F5运行:

控制台弹出:name:ls

运行正常。

开始的时候之所以提示 “操作超时”,与我添加服务的方式有关:

开始时添加服务方式:

右键=>添加服务引用=>右下角“高级”=>右下角“添加Web引用”=>输入地址 http://localhost:1111/a,修改命名空间为 sr

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            sr.fly si = new sr.fly();

            Console.Write(si.peofly("ls"));
            Console.Read();
        }
    }
}

这样就会出现标题的错误.

在这里,引用之后发现两个不同之处,我想应该就是错误原因:

1:没看到什么区别。。。。。。很纠结。。。。。。

正确:

sr.iflyClient si = new sr.iflyClient();

错误:

sr.fly si = new sr.fly();

2.

正确的添加后是 Service References

错误的添加后是 Web References

如图:

难道本机写的WCF在本机发布 不能使用 高级 引用菜单。实验了一下引用网上的WCF服务,果然如此,网上发布的免费WCF,只能在 高级 引用菜单里引用才能正确调用。

update:2019-01-14 修正代码高亮

WCF
九九
过去的我们,现在的自己,往事,终会随风而逝。 View all posts by 九九 →

Post navigation

Older post
HTTP无法注册URL进程不具有此命名空间的访问权限
Newer post
[身份证号码生成]细说哈希表和字典

标签云

2019ncov Android ASP.NET Baby C# C/C++ CSS Div DX11 flask front-end GAE Git Java JJProject JS Life MSSQL MVC OpenSource Oracle Python React React-Native Software Tools Vue Webpack Website Window WP7 乱记 十年旧梦 天气 宝宝成长日记 小说 工作 情感 故障 散文 日记 网新实训笔记 花落梧桐 诗间集 转载

时光机

  • 2023年3月
  • 2023年2月
  • 2022年12月
  • 2022年4月
  • 2022年3月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年5月
  • 2019年12月
  • 2019年10月
  • 2019年9月
  • 2019年6月
  • 2019年5月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年7月
  • 2017年3月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年7月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年8月
  • 2015年7月
  • 2015年4月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2014年5月
  • 2014年4月
  • 2014年3月
  • 2014年2月
  • 2014年1月
  • 2013年12月
  • 2013年11月
  • 2013年10月
  • 2013年9月
  • 2013年8月
  • 2013年7月
  • 2013年6月
  • 2013年5月
  • 2013年4月
  • 2013年3月
  • 2013年1月
  • 2012年11月
  • 2012年10月
  • 2012年9月
  • 2012年8月
  • 2012年7月
  • 2012年6月
  • 2012年5月
  • 2012年4月
  • 2012年3月
  • 2012年2月
  • 2012年1月
  • 2011年12月
  • 2011年11月
  • 2011年10月
  • 2011年9月
  • 2011年8月
  • 2011年6月
  • 2011年5月
  • 2011年4月
  • 2011年3月
  • 2011年2月
  • 2010年12月
  • 2010年11月
  • 2010年10月
  • 2010年9月
  • 2010年8月
  • 2010年6月
  • 2010年5月
  • 2010年2月
  • 2010年1月
  • 2009年12月
  • 2009年11月
  • 2009年10月
  • 2009年9月
  • 2009年8月
  • 2009年7月
  • 2009年6月
  • 2009年5月
  • 2009年4月
  • 2009年3月
  • 2009年2月
  • 2009年1月
  • 2008年8月
  • 2008年6月
  • 2008年5月
  • 2008年4月
  • 2008年2月
  • 2007年11月
  • 2007年8月
  • 2007年6月
  • 2007年5月
  • 2007年4月
  • 2007年3月
  • 2007年2月
  • 2007年1月
  • 2006年10月
  • 2006年8月
© 2006 - 2023 久久日记本
Powered by WordPress | Theme: Graphy for 99diary