用的是4.5的.net版本

构建model

  1. /// <summary>
  2. /// 通过id获取资料
  3. /// </summary>
  4. //[Route("/GetStudentInfo", "POST")]
  5. public class StudentInfoRequest : IReturn<StudentInfo>
  6. {
  7. public int id { get; set; }
  8. }
  9.  
  10. /// <summary>
  11. /// 获取所有用户信息
  12. /// </summary>
  13. [Route("/GetAllStudentInfo", "POST")]
  14. public class GetAllStudentInfoRequest : IReturn<StudentInfo>
  15. {
  16.  
  17. }
  18.  
  19. public class StudentInfo
  20. {
  21. public int id { get; set; }
  22. public string name { get; set; }
  23. public int age { get; set; }
  24. public string grade { get; set; }
  25. }

添加mvc web应用,创建service

  1. public interface IStudentService
  2. {
  3. int Post(StudentInfo model);
  4. StudentInfo Get(StudentInfoRequest request);
  5. bool Delete(StudentInfoRequest request);
  6. List<StudentInfo> Any(GetAllStudentInfoRequest request);
  7. bool Put(StudentInfo model);
  8. }
  9.  
  10. public class StudentService : Service, IStudentService
  11. {
  12. private static List<StudentInfo> data = new List<StudentInfo>();
  13.  
  14. public int Post(StudentInfo model)
  15. {
  16. if (data.Count <= )
  17. {
  18. model.id = ;
  19. data.Add(model);
  20. }
  21. else
  22. {
  23. model.id = data.Select(it => it.id).Max() + ;
  24. data.Add(model);
  25. }
  26. return model.id;
  27. }
  28.  
  29. public bool Delete(StudentInfoRequest request)
  30. {
  31. var selectData = data.Where(it => it.id == request.id).FirstOrDefault();
  32. if (selectData == null)
  33. {
  34. return false;
  35. }
  36. else
  37. {
  38. data.Remove(selectData);
  39. return true;
  40. }
  41. }
  42.  
  43. public StudentInfo Get(StudentInfoRequest request)
  44. {
  45. return data.Where(it => it.id == request.id).FirstOrDefault();
  46. }
  47.  
  48. public List<StudentInfo> Any(GetAllStudentInfoRequest request)
  49. {
  50. return data;
  51. }
  52.  
  53. public bool Put(StudentInfo model)
  54. {
  55. var selectData = data.Where(it => it.id == model.id).FirstOrDefault();
  56. if (selectData == null)
  57. {
  58. data.Add(model);
  59. }
  60. else
  61. {
  62. data.Remove(selectData);
  63. data.Add(model);
  64. }
  65. return true;
  66. }
  67. }

web全局文件配置

  1. protected void Application_Start()
  2. {
  3. new APIServiceHost().Init();
  4. }
  5.  
  6. public class APIServiceHost : AppHostBase
  7. {
  8. //Register your web service with ServiceStack.
  9. public APIServiceHost()
  10. : base("API服务", typeof(APIServiceHost).Assembly)
  11. {
  12. //Routes.Add(typeof(int), "/Student", "POST", "添加学生信息", "");
  13. //Routes.Add(typeof(bool), "/Student", "DELETE", "删除学生信息", "");
  14. //Routes.Add<StudentInfo>("/Student", "GET");
  15. //Routes.Add<List<StudentInfo>>("/Student", "GET");
  16. //Routes.Add<bool>("/Student", "PUT");
  17.  
  18. //Routes.Add<int>("/Grade", "POST")
  19. // .Add<bool>("/Grade/{Id}", "DELETE")
  20. // .Add<GradeInfo>("/Grade/{Id}", "GET")
  21. // .Add<List<GradeInfo>>("/Grade", "GET")
  22. // .Add<bool>("/Grade", "PUT");
  23.  
  24. //启用请求参数合法性验证功能:
  25. Plugins.Add(new ValidationFeature());
  26.  
  27. //Plugins.Add(new ProtoBufFormat());
  28.  
  29. //JsConfig.EmitCamelCaseNames = false;
  30. //Plugins.Add(new SwaggerFeature());
  31. Plugins.Add(new CorsFeature("*.test.com"));
  32. }
  33.  
  34. public override void Configure(Funq.Container container)
  35. {
  36. //Register any dependencies your services use here.
  37. }
  38. }

web.config的配置文件必须加上  红色标记的路径

  1. <system.webServer>
  2. <modules>
  3. <remove name="TelemetryCorrelationHttpModule" />
  4. <add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" preCondition="integratedMode,managedHandler" />
  5. <remove name="ApplicationInsightsWebTracking" />
  6. <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
  7. </modules>
  8.  
  9. <validation validateIntegratedModeConfiguration="false" />
  10. <handlers>
  11. <!--<add path="*.aspx" name="DefaultHttpApplication" type="System.Web.UI.PageHandlerFactory" verb="*" ></add>-->
  12. <add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
  13. </handlers>
  14. </system.webServer>

然后对接服务

  1. protected const string listenOnUrl = "http://localhost:2285/";//web的连接
  2.  
  3. 对接接口
  4. StudentInfo model = new StudentInfo();
  5. GetStudent(model);
  6. using (JsonServiceClient client = new JsonServiceClient(listenOnUrl))
  7. {
  8. model.id = client.Post<int>(model);
  9. }

启动后的样子

c# ServiceStack web 搭建的更多相关文章

  1. ServiceStack Web Service 创建与调用简单示列

    目录 ServiceStack 概念 ServiceStack Web Service 创建与调用简单示列 上篇文章介绍了ServiceStack是什么,本章进入主题,如何快速简单的搭建Service ...

  2. IIS web搭建之虚拟主机

    IIS web搭建之虚拟主机 虚拟目录:能将一个网站的文件分散存储在同一个计算机的不同目录和其他计算机. 使用虚拟目录的好处: 1.将数据分散保存到不同的磁盘或者计算机上,便于分别开发和维护. 2.当 ...

  3. Shiro的原理及Web搭建

    shiro(java安全框架) 以下都是综合之前的人加上自己的一些小总结 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.使用Shiro的易于理解的A ...

  4. Tomcat WEB搭建+Nginx负载均衡动静分离+DNS解析的实验

    实验拓扑图: 实验环境: 在VMware workstation搭建虚拟环境,利用网络适配器的Nat和桥接模式模拟内网和外网环境. 实验过程中需要安装的工具包包括:vim unzip lrzsz ls ...

  5. Flask 使用pycharm 创建项目,一个简单的web 搭建

    1:新建项目后 2:Flask web 项目重要的就是app 所有每个都需要app app=Flask(__name__)   3:Flask 的路径是有app.route('path')装饰决定, ...

  6. pycharm环境下用Python+Django开发web搭建

    1.安装pycharm: 2.安装Python: 3.安装mysql: 4.安装Django; pip3 install django 5.创建Django工程命令方式: # 创建Django程序 d ...

  7. 使用 ServiceStack 构建跨平台 Web 服务

    本文主要来自MSDN杂志<Building Cross-Platform Web Services with ServiceStack>,Windows Communication Fou ...

  8. 使用 ServiceStack 构建跨平台 Web 服务(转)

    出处:http://www.cnblogs.com/shanyou/p/3348347.html 本文主要来自MSDN杂志<Building Cross-Platform Web Service ...

  9. Win7下Python WEB环境搭建

    环境介绍: Win7 64位 SP1 Python:2.7.6 网关接口:flup Nginx安装:http://blog.csdn.net/jacson_bai/article/details/46 ...

随机推荐

  1. JavaScript作用域与闭包总结

    1.全局作用域 所有浏览器都支持 window 对象,它表示浏览器窗口,JavaScript 全局对象.函数以及变量均自动成为 window 对象的成员.所以,全局变量是 window 对象的属性,全 ...

  2. 【转】Mac find 去除 “Permission denied” 信息的方法

    转自 https://segmentfault.com/a/1190000007058875 Mac 下查找文件,最简单的方法应该是 mdfind filename 等同于 mdfind -name ...

  3. MySQL索引选择及添加原则

    索引选择性就是结果个数与总个数的比值. 用sql语句表示为: SELECT COUNT(*) FROM table_name WHERE column_name/SELECT COUNT(*) FRO ...

  4. linux下如何使rtc设备注册为指定的设备文件/dev/rtc1?

    答: 通过设备树中的aliases节点来指定即可; 如某rtc设备的节点名为rtc@68,那么想让系统为该设备生成指定的设备文件/dev/rtc1,那么就在设备树的根节点中增加aliases节点,示例 ...

  5. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_02-自定义查询页面-服务端-接口开发

    在Service中实现自定义查询 StringUtils.isNotEmpty()是这个包下的org.apache.commons.lang3.StringUtils; 再设置其他的条件 定义Exam ...

  6. Qt编写自定义控件22-蚂蚁线

    一.前言 关于蚂蚁线控件,相信很多用过PS的人都知道,在选中某个区域以后,边上的线条会有一种动态流动的效果,这种效果就叫做蚂蚁线,百科的解释是:动物的一种本能现象,领头的蚂蚁以随机的路线走向食物或洞穴 ...

  7. Spring事务管理2----编程式事务管理

    编程式事务管理 通过使用将Spring框架提供的TransactionTemplate模板注入到业务层来进行事务管理,这样对业务层原来的代码修改过多.不利于项目的后期维护. 以下是声明式事务管理的具体 ...

  8. Flutter 的url_launcher简介

    url_launcher是用于在移动平台中启动URL的Flutter插件,适用于IOS和Android平台.他可以打开网页,发送邮件,还可以拨打电话. github地址:https://github. ...

  9. Spark中foreachRDD的正确使用

    常出现的使用误区: 误区一:在driver上创建连接对象(比如网络连接或数据库连接)    如果在driver上创建连接对象,然后在RDD的算子函数内使用连接对象,那么就意味着需要将连接对象序列化后从 ...

  10. SpringBean的工作原理

    在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean.简单地讲,bean 就是由 IOC 容器初始化.装配及管理的对象,除此之外,bean 就与 ...