怎么在别的解决方案用另外一个解决方案的接口?

答:把接口代码写成服务发布到公网,其余项目用“添加服务引用”,把发布的服务添加到本身的项目中。html

 

学习过程当中参考的网址:程序员

http://www.javashuo.com/article/p-soaulrom-eu.htmlweb

http://www.javashuo.com/article/p-vwnquhmm-bb.html学习

http://www.javashuo.com/article/p-dulwieau-cy.html.net

https://blog.csdn.net/friendan/article/details/49362409orm

 

过程遇到的问题:htm

问题1:怎么发布服务blog

1)新建一个服务接口

 

2)服务里写接口,记得接口上面加个[WebMethod]。rpc

 

3)发布

 

问题二:怎么调用服务

1)在你须要调用服务的文件下,右击【添加服务引用】,具体过程看上面的网址。笔者踩过的坑:在UI层里添加引用,在DAL怎么也调用不了,结果发现引用错地方了。

 

 

2)添加成功后,会多这些文件

 

 

 

 

3)在代码中引用,具体代码看你的接口怎么写的。引用都是用一样的方法:服务名.+你的接口

代码:

WebReference.WxSentMsg ws = new WebReference.WxSentMsg(); --服务名.命名空间

WebReference.SentMsg sm = new WebReference.SentMsg(); --服务名.接口参数

sm.cntr_no = dr["CNTR_NO"].ToString(); --填写传参

sm.cntr_request = dr["REQUEST_TYPE"].ToString();

sm.cntr_size = dr["CNTR_SIZE_CODE"].ToString();

sm.pk_id = dr["PK_ID"].ToString();

sm.truck_no = dr["TRUCK_NO"].ToString();

sm.user_name = userCode;

ws.WxMsgPush(sm); --传参

 

笔者在两个项目中都引用这个服务,但方法不同。如下是在winform项目中添加:

 

一样,

1.添加服务引用,生成的文件以下。为何和上面生成的不同,= =我也不知道。多是项目不同,一个是winform项目,一个是只写服务的项目。

 

2.调用服务。这个步骤笔者踩过几个坑。

跟上面的同样的方法写好代码,本觉得能过的,结果在第一行就出现问题:

---------------------------------------------------------------

检测到 BindingFailure

Message: 显示名为“CTMS.DAL.XmlSerializers”的程序集未能加载到 ID 为 1 的 AppDomain 的“Load”绑定

上下文中。错误的缘由为: System.IO.FileNotFoundException: 未能加载文件或程序

集“CTMS.DAL.XmlSerializers”或它的某一个依赖项。系统找不到指定的文件。

---------------------------------------------------------------

 

 

从新引用几回都不行,本来个人引用方式是:高级-添加Web引用,

 

尝试几回后,换了方式:直接输入地址引用,没注意两种方法生成的文件有没有不同。

 

网上找了不少论坛,发现是调用的方法出现问题,具体网址最上面已经复制出来了。

 

接着我改调用方法,但输入服务名,点出来的东西,前面一截是个人,后面的为何都加了Response、ResponseBody啊! = =

 

 

我只能按着感受取一个试试,而后用又出现下面问题:

 

---------------------------------------------------------------

发生了 System.InvalidOperationException

Message=在 ServiceModel 客户端配置部分中,找不到引用协定“ServiceReference1.WxSentMsgSoap”的默认终结点元素。这多是由于未找到应用程序的配置文件,或者是由于客户端元素中找不到与此协定匹配的终结点元素。

---------------------------------------------------------------

 

 

最后,终于找对了:

 

我服务里的命名空间是WxSentMsg,但这里的调用要用:WxSentMsgSoapClient,这样就过了……

 

以上,在两个项目中引用web服务我总算是作完了。挺有成就感的,毕竟在此以前我什么都不懂,都是靠网上搜索,本身摸索出来的。这就是作程序员的乐趣吧,像搭积木同样,用逻辑一点点寻找线索、整合,一步步攻克难关,把本身想要的模型建成,实现后挺有成就感的。享受这个过程。

相关文章
相关标签/搜索