世界商会联合会纯代码实现超文本传送协议(超文本传输协议的缩写)服务
数据结构
公共枚举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