[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 ...
随机推荐
- volley6--CacheDispatcher从缓存中获取数据
源码: /* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, V ...
- centos下安装ipython(minglnghang命令行)
下载文件 wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate 执行安装 python get-pip.py 这就安装好了 ...
- Non-resolvable parent POM for com.*******
场景: 同事新打了一个jar包到私服里面,自己删除了本地对应的中央仓库的依赖包,再次重新下载. 于是我又打开了一个idea的窗口重新引入这个项目,然后重新下载依赖的服务. 结果就一直报这个问题... ...
- 关于 <mvc:argument-resolvers> 的一次使用记录
使用场景: 项目里面在做一个请求时候发现,不同的请求,有些请求会跳转到 spring mvc的自定义方法中,有些却不进去.自定义的方法: <mvc:annotation-driven > ...
- Windows10禁用update
1.运行 gpedit.msc 或搜索 组策略 ,点 计算机配置—管理模板—Windows组件—Windows更新—配置自动更新 ,设置“已禁用”.2.点 控制面板—系统和安全—管理工具 ,点 服务 ...
- js实现查找字符串出现最多的字符和次数
代码如下: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=" ...
- C# 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
C# 在调用C++dll时,可能会出现 :试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B)这个错误. 一般情况下是C#目标平台跟C++dll不兼容,64位跟32位兼容性问 ...
- 加装固态硬盘SSD
参考:http://tieba.baidu.com/p/4224078869 1.首先拆开后盖,取出机械硬盘,把固定框换到固态盘上,把机械盘安装到硬盘托架上. 装上固态硬盘,然后把光驱位的塑料壳子拆下 ...
- HTML学习---HTTP基础学习详解
1.HTTP访问服务器原理 客户端输入IP->查找本地hosts缓存->有则直接用获取到的IP访问服务器->服务器响应后返回客户端->客户端页面显示 ...
- apt安装mysql
使用 APT 安装 MySQL 参考官方文档 apt-get install mysql-server 这将安装MySQL服务器的包,以及客户端和数据库公共文件的包. 在安装过程中,系统会要求您为ro ...