wcf纯代码实现http服务

技术wcf纯代码实现http服务 wcf纯代码实现http服务数据结构public enum AgvUpgradeStep{VersionCheck = 0,Downloading = 1,Updati

世界商会联合会纯代码实现超文本传送协议(超文本传输协议的缩写)服务

数据结构

公共枚举AgvUpgradeStep

{

版本检查=0,

下载=1,

更新=2,

引导=3

}

公共枚举agvupgradeeresult

{

成功=0,

Running=1,

失败=2

}

[数据合同]

公共类AgvUpgradeProgress

{

[数据成员]

公共AgvUpgradeStep步骤;

[数据成员]

公共agvupgradeeresult状态;

[数据成员]

公共字符串系统错误信息表

}

一定义协定

[服务合同]

公共接口测试

{

[运营合同]

[WebGet(UriTemplate=' DownloadFile ')]//DownloadFilePath={ path }

stream DownloadFile();

[WebInvoke(方法='POST ',UriTemplate='TestJson ',响应格式=WebMessageFormat .Json,RequestFormat=WebMessageFormat .Json)]

[运营合同]

stream TestJson(AgvUpgradeProgress进度);

}

2实现协定

[服务行为(实例上下文模式=实例上下文模式.单一)]

公共类TestHttpService : testhttpinterface

{

公共字符串升级文件

公共流下载文件()

{

if (WebOperationContext .当前==null)引发新异常("未设置WebOperationContext

如果(字符串IsNullOrEmpty(升级文件))

{

返回空

}

如果(文件。存在(升级文件)=假)

{

返回空

}

变量文件名=路径. GetFileName(升级文件);

网络操作上下文.当前。外向回应。内容类型=“应用程序/八位字节流”;

网络操作上下文.当前。外向回应。标题。add(' content-disposition ',' inlinefilename=' Uri .擒纵数据字符串(FIlename));

返回文件OpenRead(升级文件);

}

公共流测试Json(AgvUpgradeProgress进度)

{

job object o=new Jobject();

o[' ret ']=' ok ';

网络操作上下文.当前。OutWangResponse。content type=' application/JSON;charset=utf-8 ';

返回新的内存流(编码. UTF8。GetBytes(o . ToString());

}

}

3创建/配置服务

1 //创建服务

2 var wcf _ file _ service=new TestHttpService;

3 //创建服务主机

4 var file _ service _ host=新服务主机(wcf _ file _ service);

5 //获取协定

6 var wcf合同=合同描述.GetContract(类型为(AgvUpgradeHttpInterface));

8字符串地址=@ ' http://0 .0 .0 .0:8888 ';

9

10 var binding=new WebHttpBinding();

11装订MaxBufferPoolSize=524288

12装订MaxBufferSize=67108864

13装订MaxReceivedMessageSize=67108864;

14装订转移模式=转移模式.流式传输;

15

16 var服务端点=新服务端点(wcf联系人、绑定、新端点地址(address));

17

18 var httpBehavior=new WebHttpBehavior();

19 httpBehavior .DefaultOutgoingRequestFormat=Webmessageformat .数据

20 httpBehavior .defaultoutingresponseformat=Webmessageformat .数据

21服务端点.端点行为。添加(新的WebHttpBehavior());

22

23文件_服务_主机AddServiceEndpoint(服务端点);

24

25 var服务元数据=新服务元数据行为();

26服务元数据HttpGetEnabled=真

27服务元数据HttpsGetEnabled=true

28服务元数据HttpGetUrl=new Uri($ ' { address }/services ');

29文件_服务_主机。描述。行为。添加(服务元数据);

30

31

32

33文件_服务_主机打开=委托{控制台。写线(‘WCF文件服务器已经启动!');};

34文件_服务_主机open();

35

36 //获取本机互联网协议(互联网协议的缩写)

37 /*字符串strHostName=字符串.空的;

38 IPHostEntry ipEntry=Dns .GetHostEntry(Dns .GetHostName());

39 IPAddress[] addr=ipEntry .地址列表

40

41表示(int I=0;我加了。长度;(一)

42 {

43控制台写线(' IP地址{0}: {1},I,addr[i].ToString());

44 }*/

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/37488.html

(0)

相关推荐

  • 怎么解决java中的Data truncation问题

    技术怎么解决java中的Data truncation问题这篇文章主要讲解了“怎么解决java中的Data truncation问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究

    攻略 2021年11月16日
  • 何为限流

    技术何为限流本篇内容介绍了“何为限流”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!限流算法做限流的时候我们有一些常用的限

    攻略 2021年10月22日
  • 利用聚合概念指导MongoDB的Schema设计是怎么样的

    技术利用聚合概念指导MongoDB的Schema设计是怎么样的这期内容当中小编将会给大家带来有关利用聚合概念指导MongoDB的Schema设计是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大

    攻略 2021年11月4日
  • 分析计算机网络HTTPS原理

    技术分析计算机网络HTTPS原理本篇内容介绍了“分析计算机网络HTTPS原理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成

    攻略 2021年11月5日
  • 从MySQL到ORACLE程序迁移的注意事项有哪些

    技术从MySQL到ORACLE程序迁移的注意事项有哪些本篇文章给大家分享的是有关从MySQL到ORACLE程序迁移的注意事项有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟

    攻略 2021年11月16日
  • Vue单页面组件mapbox gl怎么用

    技术Vue单页面组件mapbox gl怎么用这篇文章给大家分享的是有关Vue单页面组件mapbox gl怎么用 的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用Vue开发地图的时候,鉴于也

    攻略 2021年12月3日