用浏览器访问WCF

网友投稿 350 2022-11-04


用浏览器访问WCF

在开发的时候,为客户端编写代码访问WCF的方式,我们应该比较熟悉,主要是添加一个代理,然后通过这个代理进行访问。

如果用浏览器访问WCF呢?(其实最终是想在JS里面访问)用浏览器访问、测试Web Service我们常常干, 而WCF整合了Web Service,Remoting,MSMQ,访问起来应当会更加方便吧?

一、代码配置

新建一个WCF服务,系统自动生成契约(即接口文件),代码文件(*.svc)。在契约文件里,要加上必要的特性

[OperationContract] [WebGet(UriTemplate="/HelloWorld", RequestFormat=WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json)] string HelloWorld();

SVC文件里,类也要加上相关特性:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class Attendance : IAttendance { public string HelloWorld() { return "Hello World!"; } }

类这个特性,貌似也可以写到配置文件里。

二、配置文件配置

1)配置及原理

配置文件要添加一些节点。下面标注为“手动添加”的,即为需要添加的节点。其余则是系统默认提供。

这里面的节点含义,我目前并不十分了解。大概是:WCF本身提供服务(Services),外部通过接口,即endpoint(端点)来使用这些服务。然后服务、端点,都有一些约定进行描述,即behavior。

从上述配置文件可以看到,Service下面的endpoint,引用了的内容。

有关配置文件的一些知识,可以参考

我的WCF之旅(2):Endpoint Overview

​​WCF配置文件详解(一)​​

2)跨域请求问题

不过,要注意,JS访问WCF,常常有跨域的问题。那么这时候要配置一下WCF的配置文件。详见拙作:

​​PhoneGap:JS跨域请求​​

三、用IIS承载WCF

首先要将WCF发布到一个指定文件夹,然后在IIS里配置此文件夹为网站。

这种发布跟普通asp.net网站发布没什么两样。习惯上,我喜欢发布为文件系统,每个文件一个DLL这种方式。

四、返回值类型用Stream

使用流作为返回值的好处,一是速度似乎比较快,二是如果服务返回string等其他类型,IE浏览器下,会有提问框出现,流就没有这个问题

public Stream Delete() { return GetStream(@"{""data"":""OK!!!!!!""}"); } ///

/// 辅助方法,用于输出流 /// /// /// private Stream GetStream(string str) { MemoryStream ms = new MemoryStream(); StreamWriter sw = new StreamWriter(ms); sw.AutoFlush = true; sw.Write(str); ms.Position = 0; WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain"; return ms; }


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:操作JSON对象
下一篇:中级会计成绩查询时间API(中级会计成绩查询时间2021)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~