转自:http://blog.csdn.net/bitfan/article/details/4193319

如果使用Visual Studio 2008 SP1开发WCF应用程序时,会发现当使用Visual Studio 2008的新建“WCF服务”模板向项目中添加WCF服务时,Visual Studio 2008总是使用wsHttpBinding绑定,并且使用以下格式的地址:

<host>
    <baseAddresses>
         <add baseAddress="http://localhost:8731/Design_Time_Addresses/WCF服务名"/>
     </baseAddresses>
</host>

这里面有一个神秘的端口8731和一个神秘的地址Design_Time_Addresses。

让我们来做个实验:

在Vista中关闭用户账户控制,然后启动Visual Studio 2008,基于新建“WCF服务”模板向项目中添加一个WCF服务(不妨取名MyWCFService),生成的默认服务地址为:

<baseAddresses>
    <add baseAddress="http://localhost:8731/Design_Time_Addresses/MyWCFService/" />
</baseAddresses>

去掉Design_Time_Addresses,将其改为:

<baseAddresses>
                        <add baseAddress="http://localhost:8731/MyWCFService/" />
 </baseAddresses>

你会发现WCF的服务启动不会有任何问题。

然而,现在打开用户账户控制,再次使用Visual Studio 2008打开并运行同样的代码,Visual Studio 2008会抱怨:

将其改回:

<baseAddresses>
    <add baseAddress="http://localhost:8731/Design_Time_Addresses/MyWCFService/" />
</baseAddresses>

发现WCF服务又可以启动了。

刚遇到这种情况时真得很奇怪,“8731“端口和“Design_Time_Addresses”到底有何“神秘”之处,有这种怪异的特性?

Google一下,终于在Cesar de la Torre的博客中发现了问题原因(http://blogs.msdn.com/cesardelatorre/archive/2008/01/27/design-time-addresses-url-in-wcf-net-3-5.aspx):

原来Visual studio 2008在安装时注册了一个针对"http://+:8731/Design_Time_Addresses"命名空间的ACL(Access Control List),从而使运行Visual studio的当前用户(他们属于此ACL)不需要Administrator权限也可以开发和调试WCF服务。

由此真相大白,如果你在开发WCF服务时需要指定不同于默认值的WCF服务地址,请以“管理员”身份运行Visual Studio 2008。

或者更简单一些,关掉用户帐户控制,我一直觉得Vista的"用户帐户控制"功能实在烦人,有了它也不见得就安全了。

(转)WCF中神秘的“8733"端口和“Design_Time_Addresses”的更多相关文章

  1. WCF服务启用与配置端口共享

    在 Windows Communication Foundation (WCF) 应用程序中使用 net.tcp:// 端口共享的最简单方式是使用 NetTcpBinding 公开一个服务. 此绑定提 ...

  2. WCF中常用的binding方式

    WCF中常用的binding方式: BasicHttpBinding: 用于把 WCF 服务当作 ASMX Web 服务.用于兼容旧的Web ASMX 服务.WSHttpBinding: 比 Basi ...

  3. C# WCF学习笔记(二)终结点地址与WCF寻址(Endpoint Address and WCF Addressing) WCF中的传输协议

    URI的全称是 Uniform Rosource Identifire(统一资源标识),它唯一标识一个确定的网绐资源,同时也表示资源所处的位置及访问的方式(资源访问所用的网络协议). 对于Endpoi ...

  4. 我的WCF之旅(3):在WCF中实现双工通信

    双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息.基于双工MEP消息交换可以看成是多个基本模式下(比如请求-回复模式和单项模式)消息交换的组合.双工MEP又具 ...

  5. 在WCF中实现双工通信

    双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息.基于双工MEP消息交换可以看成是多个基本模式下(比如请求-回复模式和单项模式)消息交换的组合.双工MEP又具 ...

  6. WCF中,通过C#代码或App.config配置文件创建ServiceHost类

    C# static void Main(string[] args) { //创建宿主的基地址 Uri baseAddress = new Uri("http://localhost:808 ...

  7. WCF学习之旅—WCF中传统的异常处理(十六)

    WCF中的异常处理 在软件开发过程中,不可能没有异常的出现,所以在开发过程中,对不可预知的异常进行解决时,异常处理显得尤为重要.对于一般的.NET系统来说,我们简单地借助try/catch可以很容易地 ...

  8. 在Wcf中应用ProtoBuf替代默认的序列化器

    Google的ProtoBuf序列化器性能的牛逼已经有目共睹了,可以把它应用到Socket通讯,队列,Wcf中,身为dotnet程序员一边期待着不久后Grpc对dotnet core的支持更期待着Wc ...

  9. ajax调用本地wcf中的post和get

    我们可以通过jQuery调用本地或者远程的wcf服务,本文讲解的是对本地wcf服务的post和get调用方式. post和get到底有什么区别呢?此处不作详述. 但是,post对请求的数据格式更为严格 ...

随机推荐

  1. 产品密钥无法激活成功,最后使用visio2013激活软件激活成功。

    装了visio2013,使用网上搜索的产品密钥,没有一个能够激活成功.最后发现了visio的一个激活软件KMSpico,成功激活. 破解工具 KMSpico_setup.exe 下载地址: http: ...

  2. SSI服务端包含技术

    1.页面拆出来怎么样通过web服务浏览呢? 使用web服务(例如nginx)的SSI技术,将多个子页面合并渲染输出. 2.SSI是什么? 3. ssi包含类似于jsp页面中的incluce指令,ssi ...

  3. Oracle性能优化4-索引

    Oracle优化可以分为通过改写sql优化和不改写sql优化不改写sql优化一般通过index来实现 在Oracle数据库中,索引按照索引机制的不同,可以分为三种. 1. B-Tree索引 B-Tre ...

  4. c#task list waitall task waitany

    上边的主线程会被卡住: 7个同时开发,谁先完成之后, 需要完成某个工作,可以用waitany 2: 不卡界面的做法 加上以上命令就不卡,是子线程做的事 //Task task = taskFactor ...

  5. ftp中ftpClient类的API

    org.apache.commons.NET.ftp  Class FTPClient类FTPClient java.lang.Object java.lang.Object继承 org.apache ...

  6. ES6 Symbol的应用场景

    一.简介 具体使用请参考:API ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值.它是 JavaScript 语言的第七种数据类型,前六种是:undefined.null.布尔值(B ...

  7. RDMA的原理、传输与Verbs

    RDMA的原理.传输与Verbs   RDMA最早专属于infiniband架构.在网络融合的大趋势下出现的RoCE,使高速.超低延时.极低cpu使用率的RDMA得以部署在目前使用最广泛的以太网上.  ...

  8. 796B Find The Bone

    B. Find The Bone time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  9. Centos安装配置Postfix邮件服务器--网址

    http://www.haiyun.me/archives/centos-install-postfix.html http://blog.csdn.net/liuyunfengheda/articl ...

  10. 解析vue2.0中render:h=>h(App)的具体意思

    render:h=>h(App)是ES6中的箭头函数写法,等价于render:function(h){return h(App);}. 注意点:1.箭头函数中的this是 指向 包裹this所在 ...