[WCF学习笔记] 我的WCF之旅(1):创建一个简单的WCF程序
近日学习WCF,找了很多资料,终于找到了Artech这个不错的系列。希望能从中有所收获。
本文用于记录在学习和实践WCF过程中遇到的各种基础问题以及解决方法,以供日后回顾翻阅。可能这些问题都很基础,可是对于新手来说,在没有经验的情况下有时候很难找到解决办法。反正这些问题是真的困扰了我一些时间的。若能为其他新手所用,也是我的荣幸。
博文系列地址:《我的WCF之旅》博文系列汇总
1. 照葫芦画瓢的把第一个简单的WCF程序做出来运行之后(设置Hosting项目作为启动项),在执行到“host.Open();”处遇到如下错误
“HTTP 无法注册 URL http://+:3721/calculatorservice/。进程不具有此命名空间的访问权限(有关详细信息,请参见 http://go.microsoft.com/fwlink/?LinkId=70353)。”
因为之前看过其他文章时有所提及,大概猜到如何解决:使用管理员身份运行Visual Studio即可。至于原因,没有深究。
2. WCF Service Configuration Editor添加Service的时候怎么选择Service Type?
本来是比较喜欢用手敲的,但是第一次见这个Tool,想玩一下,结果新建Service的时候懵了,要选Service Type!
还记得使用代码实现配置里面有这么一段吗?ServiceHost host = new ServiceHost(typeof(CalculatorService))
没错,Service Type就是我们自定义的服务的实现类型,不过是要指定完全限定名称,如示例中的Artech.WcfServices.Services.CalculatorService,应用到配置文件中即为Service元素的name属性,即<service name="Artech.WcfServices.Services.CalculatorService">
选完之后还没完,又要选Contract Type of Endpoint,跟上面一样的方法,在代码中可以看出,不再赘述。
接下来还有其他各种选择和设置,配置完后,我决定再也不用这个Tool了,简直是浪费时间和精力,好痛苦,哈哈,还是老老实实手敲吧。
3. 如何添加服务引用?运行Hosting.exe报错?
在步骤五(创建客户端调用服务)中提到:在运行服务寄宿程序(Hosting.exe)的情况下,右键点击Client项目,在弹出的上下文菜单中选择“添加服务引用(Add Service References)”。
请注意此处说的运行Hosting.exe,所以不是Debug模式哦,Debug模式下是无法对项目进行添加服务引用操作的。正确的做法是到Hosting项目所在物理路径的Bin/Debug或者Bin/Release文件夹找到编译之后生成的Hosting.exe, 并使用管理员身份运行(特别提示:不使用管理员身份运行会报错哦)。
4. IIS寄宿之后通过URL访问报错:HTTP 错误 500.19 - Internal Server Error
配置错误 :由于权限不足而无法读取配置文件

解决办法:给虚拟目录添加IIS_IUSRS的权限
5. IIS寄宿后通过URL访问报错
找不到类型“WcfServices.Services.CalculatorService”,它在 ServiceHost 指令中提供为 Service 特性值,或在配置元素 system.serviceModel/serviceHostingEnvironment/serviceActivations 中提供。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 找不到类型“WcfServices.Services.CalculatorService”,它在 ServiceHost 指令中提供为 Service 特性值,或在配置元素 system.serviceModel/serviceHostingEnvironment/serviceActivations 中提供。
解决方法:把Services.dll和Contracts.dll从Bin/Debug|Release目录拷贝到Bin目录,或者在项目Build选项中把Output path设置改为Bin\再重新编译。这个老师在文章里有提到,但是没有说明会报的错误是什么,如果不小心疏忽掉,从这个错误消息中不太容易判断是什么造成的。
其他大大小小的问题,还有一些忘记记录。至此,花了不少时间做这个练习,总算把它完成了。看来路还很长啊。
TT
[WCF学习笔记] 我的WCF之旅(1):创建一个简单的WCF程序的更多相关文章
- [转载]我的WCF之旅(1):创建一个简单的WCF程序
为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用.本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构.对那些对WCF不是很了解的读者来说,这个例 ...
- 我的WCF之旅(1):创建一个简单的WCF程序
为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用.本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构.对那些对WCF不是很了解的读者来说,这个例 ...
- WCF入门, 到创建一个简单的WCF应用程序
什么是WCF? WCF, 英文全称(windows Communication Foundation) , 即为windows通讯平台. windows想到这里大家都知道了 , WCF也正是由微软公 ...
- WCF服务二:创建一个简单的WCF服务程序
在本例中,我们将实现一个简单的计算服务,提供基本的加.减.乘.除运算,通过客户端和服务端运行在同一台机器上的不同进程实现. 一.新建WCF服务 1.新建一个空白解决方案,解决方案名称为"WC ...
- 创建一个简单的WCF程序2——手动开启/关闭WCF服务与动态调用WCF地址
一.创建WCF服务器 1.创建WCF服务器的窗体应用程序 打开VS2010,选择文件→新建→项目菜单项,在打开的新建项目对话框中,依次选择Visual C#→Windows→Windows窗体应用程序 ...
- 创建一个简单的WCF程序
1.创建WCF服务库 打开VS2010,选择文件→新建→项目菜单项,在打开的新建项目对话框中,依次选择Visual C#→WCF→WCF服务库,然后输入项目名称(Name),存放位置(Location ...
- [shiro学习笔记]第二节 shiro与web融合实现一个简单的授权认证
本文地址:http://blog.csdn.net/sushengmiyan/article/details/39933993 shiro官网:http://shiro.apache.org/ shi ...
- opengl学习笔记(五):组合变换,绘制一个简单的太阳系
创建太阳系模型 描述的程序绘制一个简单的太阳系,其中有一颗行星和一颗太阳,用同一个函数绘制.需要使用glRotate*()函数让这颗行星绕太阳旋转,并且绕自身的轴旋转.还需要使用glTranslate ...
- WCF学习笔记之事务编程
WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...
随机推荐
- 万能的JDBC工具类。通过反射机制直接简单处理数据库操作
package com.YY.util; import java.io.IOException; import java.io.InputStream; import java.sql.Connect ...
- [翻译] HTKDynamicResizingCell
HTKDynamicResizingCell https://github.com/henrytkirk/HTKDynamicResizingCell Subclassed UITableView/U ...
- Django路由系统---django重点之url传递一个默认参数
django重点之url传递一个默认参数 可以利用这个特性,让2个URL映射一个函数,但是返回2个不同的HTML url(r'default_param1', views.def_param,), u ...
- Mybatis学习---Mybatis分页插件 - PageHelper
1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...
- Linux kill/pkill/killall命令详解
kill kill(terminate a process)命令用来终止指定的进程, 对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PI ...
- Linux下的Mysql的双向同步
在主从复制的基础上实现双向同步 [更多参考] https://www.cnblogs.com/shuidao/p/3551238.html http://blog.csdn.net/i_bruce/a ...
- winform中webBrowser模拟网页操作中遇到的问题
我们通过网页上传一些特殊数据的时候,由于必填项众多,数量量大的时候,会发现工作相当繁琐,前段时间做了一个winform内嵌webBrowser模拟网页上传文档的小工具,发现了许多问题,总结一下: 先说 ...
- 原生ajax和jsonp
封装方法: function ajax(options) { options = options || {}; options.type = (options.type || "GET&qu ...
- MVC与EF结合:Contoso大学
中文教程 1.通过 MVC 5 使用 Entity Framework 6 Code First 入门 https://docs.microsoft.com/zh-cn/aspnet/mvc/over ...
- facebook页面种简单测试js调用flash开放的js接口的方法
无意间折腾出来的,此方法很triky,但是很简单有效. 背景说明: facebook种内嵌的iframe无法直接访问. 解决方法: chrome浏览器为例 1.右键查看iframe源代码,此时进入if ...