环境:vs2012、iis7
项目类型:wcf 工作流服务
项目内容:wf4.5 状态机。
现象:
完成 xamlx 文件后放 iis 里,浏览器可以访问此文件。然后做一个客户端,选 添加服务引用 来生成代理类。结果在对话框消失后没有生成代理类,客户端项目的配置文件中没有添加 web service 配置。
这时打开 windows 事件,发现下面信息:
WebHost 无法处理请求。
发件人信息: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/62476613
异常: System.Web.HttpException (0x80004005): 服务“/x/s/s1.xamlx/_vti_bin/ListData.svc”不存在。 ---> System.ServiceModel.EndpointNotFoundException: 服务“/x/s/s1.xamlx/_vti_bin/ListData.svc”不存在
没有对 xamlx 文件所在的 web.config 进行过手工改动。
原因:
xamlx 文件本身。
状态机中,有个 状态点 没有在 entry 里配置 Receive,就是说,不会在这个状态上进入 idel。把这个节点删除,客户端 更新引用, 代理类生成了。
分析:
没有状态机的时候用 pick 来挂起,pick 如果没有 receive 这类动作就提示错误,因此没有注意过这样的问题。状态机不提示出错,但还是会产生一个调用,这个调用的 终结点 配置是由 receive 完成,没有这类动作,就没有终结点。
对 wcf 机制不清楚,也没仔细查看状态机文档,就上手了,这只是直觉分析。