今天在练习wcf时,客户端调用服务端方法时出现异常。如下:

未处理System.ServiceModel.AddressAlreadyInUseException

Message="HTTP 无法注册 URL http://+:80/Temporary_Listen_Addresses/88c4ba08-ef25-4254-8811-870fffe5f9ea/,因为另一应用程序正在使用 TCP 端口 80。"

网络解决方法:

当WCF的服务使用session时,我们只有几种协议可供选择: 1. netTcp - 用这个协议是最好的,但有个重要问题是,IIS6不支持netTcp协议,所以要么我们用IIS7来host我们的WCF服务,要么就自己写一个host; 2. wsDualHttp - 因为Http协议天生不是双工通讯的,所以要想双工通讯,必须在客户端再启用一个端口来做回调端口,如果我们不在客户端的代理端做任何事情的话,很可能得到以下错误: HTTP 无法注册 URL http://+:80/Temporary_Listen_Addresses/08eee047-5225-4970- a777-084fe92620b9/。进程不具有此命名空间的访问权限(有关详细信息,请参阅http://go.microsoft.com /fwlink/?LinkId=70353)
因为客户端默认要用Tcp 80端口来作为回调端口,可是作为网络程序,是需要本机的管理员权限才能注册的。

解决代码:

ServiceReference1.IcalculatorDuplexClient cd = new IcalculatorDuplexClient(InstanceContext);

Uri uri = new Uri(@"http://localhost:8000/");

if (cd.Endpoint.Binding.Name == "WSDualHttpBinding")

{

((WSDualHttpBinding)cd.Endpoint.Binding).ClientBaseAddress = uri;

}

但是,这样还有个问题,如果这个端口也不幸被占用了或者我们需要在XP端同时执行2个及2个以上客户端程序的话,会报错误“HTTP无法注册URL http://+:8000/。另一应用程序已使用HTTP.SYS注册了该URL”。

所以有人提出了这样一个解决方案:

int selectedPort = 8000;

bool goodPort = false;

IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];

//

while (!goodPort)

{

IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, selectedPort);

TcpListener list = new TcpListener(ipLocalEndPoint);

try

{

list.Start();

goodPort = true;

list.Stop();

}

catch

{

selectedPort++;

}

} 上面这段程序通过尝试从8000起的端口,如果不能start就通过catch捕获到后,端口号自增1,直到启动起来为止。

from:http://blog.sina.com.cn/s/blog_6e93f12e0100zk44.html

HTTP 无法注册 URL http://+:80/Temporary_Listen_Addresses/92819ef8-81ea-4bd9-的更多相关文章

  1. ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系

    ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...

  2. wcf开启服务 HTTP 无法注册 URL 进程不具有此命名空间的访问权限

    HTTP 无法注册 URL [url]http://127.0.0.1:9999/calculatorservice/metadata[/url].进程不具有此命名空间的访问权限 今天按照网上的例子开 ...

  3. 【异常】VS中运行HTTP 无法注册URL

    参考资料 http://www.java123.net/detail/view-449670.html http://www.cnblogs.com/jiewei915/archive/2010/06 ...

  4. 注册URL模式与HttpHandler的映射关系

    注册URL模式与HttpHandler的映射关系 ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHan ...

  5. Xcode6.4注册URL Scheme步骤详解

    URL Scheme的作用 我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的.但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便 ...

  6. HTTP 无法注册 URL http://+:9999/CalculatorService/。进程不具有此命名空间的访问权限

    转自:http://www.cnblogs.com/flyher/archive/2013/06/28/3161170.html 写WCF时在 1 host.Open(); 报错:HTTP 无法注册 ...

  7. (转)HTTP 无法注册 URL http://+:9999/CalculatorService/。进程不具有此命名空间的访问权限

    写WCF时在 1 host.Open(); 报错:HTTP 无法注册 URL http://+:9999/CalculatorService/.进程不具有此命名空间的访问权限(有关详细信息,请参见 h ...

  8. 微信自定义菜单url默认80端口问题解决

    微信自定义菜单url默认80端口的,但是有些服务器上可能配置了多个tomcat.或者是刚好你服务器上80端口被占用了.在这样的情况下,我们可以通过如下方式解决: 首先安装apache,关于apache ...

  9. springMVC源码分析--AbstractHandlerMethodMapping注册url和HandlerMethod对应关系(十一)

    在上一篇博客springMVC源码分析--AbstractHandlerMethodMapping获取url和HandlerMethod对应关系(十)中我们简单地介绍了获取url和HandlerMet ...

随机推荐

  1. 基于zabbix 内置key的应用

    一.内置key说明: Zabbix 内置了很多丰富的key,使得咱们再添加linux os模板的时候,已经帮我们把key给定义好,这样我们就能够直接链接模板就可以使用了. 我们这边的话列举一些内置ke ...

  2. typeof和instanceof 运算符

    instanceof运算符与typeof运算符相似,用于识别正在处理的对象的类型,但是在使用 typeof 运算符时采用引用类型存储值会出现一个问题. 无论引用的是什么类型的对象,它都返回 " ...

  3. 跟着百度学PHP[7]会话控制(session与cookie) 1.cookie的设置

    参考慕课网:http://www.imooc.com/learn/26 参考W3C:http://www.w3school.com.cn/php/php_cookies.asp setcookie() ...

  4. Yii 将对象转化成数组

    将从数据库查找的对象,转换成数组,并且以设定属性键名称,用到ArrayHelper::toArray $posts = Post::find()->limit(10)->all(); $d ...

  5. java数据结构-非线性结构之树

    一.树状图 树状图是一种数据结构,它是由n(n>=1)个有限节点组成的具有层次关系的集合.因其结构看起来想个倒挂的树,即根朝上,叶子在下,故被称为"树". 特点: 1. 每个 ...

  6. tcpdump来抓取执行的sql语句

    # tcpdump -n -nn -tttt -i eth1 -s 65535 'port 3306' -w tcpdump_mysql.ret -C 100 一个TCP包中包含多个mysql协议包, ...

  7. PAT---1050. String Subtraction (20)

    #include<iostream> #include<string.h> #include<stdio.h> using namespace std; #defi ...

  8. SQL2008和SQL2000可以跨服务器连接查询的测试实例

    测试目的: SQL2008 和 SQL2000 是否可以跨服务器连接查询 -- 测试环境: --A 虚拟机 XP ( IP : .0.0.213 )安装 SQL2000 个人版,并安装 SP4 补丁. ...

  9. window下手动搭建 PHP+Nginx+Mysql(转)

    首先还是下载 nginx:  http://nginx.org/en/download.html php  :  http://windows.php.net/download/ mysql:  ht ...

  10. 最简单的自定义适配器adapter

    下面是一个非常简单的自定义适配器的总体源码,从这个源码入门,就可以慢慢学会适配器了 适配器的作用: 完成数据和界面控件的绑定,把数据绑定到界面的现实控件条目上(对于listView,应该是listVi ...