近日学习WCF,找了很多资料,终于找到了Artech这个不错的系列。希望能从中有所收获。

本文用于记录在学习和实践WCF过程中遇到的各种基础问题以及解决方法,以供日后回顾翻阅。可能这些问题都很基础,可是对于新手来说,在没有经验的情况下有时候很难找到解决办法。反正这些问题是真的困扰了我一些时间的。若能为其他新手所用,也是我的荣幸。

博文系列地址:《我的WCF之旅》博文系列汇总

我的WCF之旅(1):创建一个简单的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程序的更多相关文章

  1. [转载]我的WCF之旅(1):创建一个简单的WCF程序

    为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用.本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构.对那些对WCF不是很了解的读者来说,这个例 ...

  2. 我的WCF之旅(1):创建一个简单的WCF程序

    为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用.本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构.对那些对WCF不是很了解的读者来说,这个例 ...

  3. WCF入门, 到创建一个简单的WCF应用程序

    什么是WCF?  WCF, 英文全称(windows Communication Foundation) , 即为windows通讯平台. windows想到这里大家都知道了 , WCF也正是由微软公 ...

  4. WCF服务二:创建一个简单的WCF服务程序

    在本例中,我们将实现一个简单的计算服务,提供基本的加.减.乘.除运算,通过客户端和服务端运行在同一台机器上的不同进程实现. 一.新建WCF服务 1.新建一个空白解决方案,解决方案名称为"WC ...

  5. 创建一个简单的WCF程序2——手动开启/关闭WCF服务与动态调用WCF地址

    一.创建WCF服务器 1.创建WCF服务器的窗体应用程序 打开VS2010,选择文件→新建→项目菜单项,在打开的新建项目对话框中,依次选择Visual C#→Windows→Windows窗体应用程序 ...

  6. 创建一个简单的WCF程序

    1.创建WCF服务库 打开VS2010,选择文件→新建→项目菜单项,在打开的新建项目对话框中,依次选择Visual C#→WCF→WCF服务库,然后输入项目名称(Name),存放位置(Location ...

  7. [shiro学习笔记]第二节 shiro与web融合实现一个简单的授权认证

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39933993 shiro官网:http://shiro.apache.org/ shi ...

  8. opengl学习笔记(五):组合变换,绘制一个简单的太阳系

    创建太阳系模型 描述的程序绘制一个简单的太阳系,其中有一颗行星和一颗太阳,用同一个函数绘制.需要使用glRotate*()函数让这颗行星绕太阳旋转,并且绕自身的轴旋转.还需要使用glTranslate ...

  9. WCF学习笔记之事务编程

    WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...

随机推荐

  1. Same Tree 比较两个二叉树是否完全相同

    Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...

  2. MUI框架-12-使用原生底部选项卡(凸出图标案例)

    MUI框架-12-使用原生底部选项卡(凸出图标案例) 今天,用 mui 做 app 时,遇到了可能各位都遇到过的头疼问题:底部中间图标凸起,如下图: 最后有源代码 [提示]:有人问我在 HBuilde ...

  3. PyCharm添加Selenium与Appium依赖

  4. 控制HTML页面内容不能选中的方法

    方法有二 一: css 方法 user-seletct: none;-webkit-user-seletct: none;-moz-user-seletct: none;-ms-user-seletc ...

  5. 效果CSS实现三角

      <view class="hd"></view>.hd {   content: "";   height: 16rpx;   wi ...

  6. Python函数汇总(陆续更新中...)

    range的用法 函数原型:range(start, end, scan): 参数含义: start:计数从start开始.默认是从0开始.例如range(5)等价于range(0, 5); end: ...

  7. 获取当前网页的的url

    如果测试的url地址是http://www.test.com/testweb/default.aspx, 结果如下: Request.ApplicationPath:                / ...

  8. 定义类/实例(Class)

    # -*- coding: UTF-8 -*- class pp(): '''Description'''   def __init__(self,name): #初始化函数     self.nam ...

  9. Hive开窗函数的理解

    1.从一个sql语句开始 select id,sum(price) over(partition by id order by price desc) from books; sum作为聚合函数的时候 ...

  10. [EffectiveC++]item13:Use objects to manage resources(RAII)

    baidu百科 RAII 百科名片 RAII,也称为“资源获取就是初始化”,是c++等编程语言常用的管理资源.避免内存泄露的方法.它保证在任何情况下,使用对象时先构造对象,最后析构对象. 目录 RAI ...