zoukankan      html  css  js  c++  java
  • C#无需IIS构建XmlRpc服务器

    C#无需IIS构建XmlRpc服务器

     

    准备

    我们使用CookComputing.XmlRpcServerV2 3.0.0来构建XmlRpc服务器。

    新建一个控制台项目,在项目中添加对CookComputing.XmlRpcServerV2 3.0.0的引用,可以使用nuget来安装。

    1
    2
    
    PM> Install-Package xmlrpcnet
    PM> Install-Package xmlrpcnet-server
    

    编写服务

    我这里写了个非常简单的服务,代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    
    public class SimpleService : XmlRpcListenerService
    {
      [XmlRpcMethod]
      public int Add(int a, int b)
      {
        return a + b;
      }
    }
    

    编写Service Host相关代码,也就是XmlRpc服务代码

    这里我们通过HttpListener类处理XmlRpc客户端的请求,HttpListener使用的是异步处理,代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    class Program
    {
      private static XmlRpcListenerService _svc = new SimpleService();
    
      static void Main(string[] args)
      {
          HttpListener listener = new HttpListener();
          listener.Prefixes.Add("http://127.0.0.1:11000/");
          listener.Start();
          listener.BeginGetContext(new AsyncCallback(ProcessRequest), listener);
          Console.ReadLine();
      }
    
      static void ProcessRequest(IAsyncResult result)
      {
          HttpListener listener = result.AsyncState as HttpListener;
          // 结束异步操作
          HttpListenerContext context = listener.EndGetContext(result);
          // 重新启动异步请求处理
          listener.BeginGetContext(new AsyncCallback(ProcessRequest), listener);
          try
          {
              Console.WriteLine("From: " + context.Request.UserHostAddress);
              // 处理请求
              _svc.ProcessRequest(context);
          }
          catch (Exception ex)
          {
              Console.WriteLine(ex.Message);
          }
      }
    }
    

    启动程序后,打开浏览器访问:http://127.0.0.1:11000/就可以看到如下的页面,现在就可以调用XmlRpc服务了。

    XmlRpc服务

    本文版权归翟士丹(Stan Zhai)博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
    分类: .Net
  • 相关阅读:
    点语法
    第一个OC的类
    gitlab教程
    php接收post的json数组
    phpstorm10.0.2三月22号补丁原来的网址被封了
    冰点下载器在转换pdf的时候出现停止工作
    乱码问题
    有用的网址(php)
    ubuntu16.04安装mysql5.6
    MapUtils常用方法
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3502871.html
Copyright © 2011-2022 走看看