怎么在Webforms 下搭建WebAPI?

公司的很多项目前期一直是用的webforms。但是因为业务的发展,公司要在原有的项目上接入移动端,webservice有点老旧了,现在比较流行restful,于是乎就想到了webapi

一、如果是新建项目最简单,文件=>新建=>项目=>Web=> ASP.NET Web 应用程序,在下方同时勾选Web Forms 和 Web API 核心引用即可,webfroms核心和WebAPI核心的应用程序就创建好了。

image

 

image

二、如果是原有的项目上增加WebAPI,只要将相关的包引用即可。

1.这里先创建WebForms 应用程序

image

image

2.Webfroms项目创建完成后,需要用到VS的NuGet包管理器。右击引用,选择 管理NuGet程序包。

选择 浏览,搜索WebAPI,选择第一个Microsoft.AspNet.WebApi;点击右边的安装后点击确定,后选择我接受,等到输出显示成功,则安装完成。

image

image

 

image

3.右击Web项目,添加名为App_Start的文件夹,在App_Start文件夹下创建名为WebApiConfig的cs文件。

清理命名空间,将类更改为static类型,添加必要代码,缺少引用的自行引用。

image

完整代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Http;namespace WebFormsDemo{public static class WebApiConfig    {public static void Register(HttpConfiguration config)        {// Web API 配置和服务// Web API 路由            config.MapHttpAttributeRoutes();            config.Routes.MapHttpRoute(                name: "DefaultApi",                routeTemplate: "api/{controller}/{id}",                defaults: new { id = RouteParameter.Optional }            );        }    }}

登录后复制

4.需要在Global.asax文件下的Application_Start方法中注册一下WebAPI,这里需要引用System.Web.Http;完整代码如下:

protected void Application_Start(object sender, EventArgs e){// 在应用程序启动时运行的代码    GlobalConfiguration.Configure(WebApiConfig.Register);}

登录后复制

5.接下来让我们来测试一下,新建一个Controller

image

6.浏览器访问http://localhost:27650/api/values/get?id=1,测试通过。

 

image

三、使用OWIN来作为宿主启动Webapi

上述是使用Global方式启动WebAPI,如果项目中使用的SignalR,就必须使用OWIN来作为宿主,虽然网上有教程Global也可以启动SignalR(在中Application_Start方法加上一句  RouteTable.Routes.MapHubs();),但是微软早在2014年6月就对其声明了过时,建议使用Owin Startup Class的方式启动SignalR。()

1.废话不多说,新建Startup类

image

image

2.直接在Configuration 方法下新建一个ConfigureWebapi方法,完整代码如下:

        /// /// 配置Webapi/// /// public void ConfigureWebapi(IAppBuilder app)        {//创建一个HTTP的实例配置HttpConfiguration config = new HttpConfiguration();//映射路由            config.Routes.MapHttpRoute(                name: "DefaultApi",                routeTemplate: "api/{controller}/{id}",                defaults: new { id = RouteParameter.Optional }            );//将配置注入OWIN管道中            app.UseWebApi(config);        }

登录后复制

 

image

3.我们发现,有错误信息IAppBuilder中未包含UseWebApi的定义,原因是缺少Self-Host寄宿支持,在程序包管理器控制台,中输入以下指令:

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

登录后复制

image

4.安装完成后错误提示消失

image

5.移除Global中的启动方式,并将ConfigureWebapi方法初始化。

image

image

6.让我们来测试一下,http://localhost:27650/api/values/get?id=1,报错误404.

image

7.原因是还缺少一个名为 Microsoft.Owin.Host.SystemWeb 的包,这个包提供了Owin服务运行ASP.NET 网络请求管道。在程序包管理器控制台,中输入以下指令:

install-package Microsoft.Owin.Host.SystemWeb

登录后复制

image

8.让我们再来测试一下,浏览器中输入http://localhost:27650/api/values/get?id=1,测试通过。

image

最后,值得一提的是官方的教程大多都使用隐式类型var 关键字,有网友说使用隐式类型的好处有

1.它有利于更好地为本地变量命名。
2. 它有利于设计更好的API。
3. 它促使对变量进行初始化。
4. 它消除了代码的混乱。
5. 它不需要using指示符。

楼主还没有深刻的体会和研究,不敢在这里妄加解释。还在学习中,下面是微软官方的文档,大家感受一下。

image

文章到这里就结束了,其实写如何搭建WebAPI的文章也很多,这里仅仅是做一下记录,以防自己忘掉,如果此文章有幸被你看到,欢迎不吝指教。

以上就是怎么在Webforms 下搭建WebAPI?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2440565.html

(0)
上一篇 2025年3月3日 12:29:21
下一篇 2025年3月3日 12:29:45

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 分享一个磁盘文件查看系统

    本篇和大家分享的是一个磁盘文件查看系统,严格来说是使用NetCore写的一个Web系统应用,由于NetCore跨平台特性,我生成了exe的运行包,只需要配置运行电脑ip+端口,即可在浏览器中通过IP+端口的方式访问目标调用上的所有目录,不错…

    2025年3月3日 编程技术
    200
  • C#如何在图片增加文字的示例代码分享

    最近做项目需要动态给图片增加文字(书本的封面图片),修改字体大小、字体、颜色、控制位置等,下面通过实例代码给大家分享c#在图片增加文字的实现代码,一起看看吧 业务需要动态给图片增加文字(书本的封面图片),修改字体大小、字体、颜色、控制位置 …

    编程技术 2025年3月3日
    200
  • 理解Asp.Net中WebForm的生命周期_实用技巧

    这篇文章主要给大家介绍了关于asp.net中webform生命周期的相关资料,文中介绍的非常星系,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。 前言 本文主要给大家介绍的是关于Asp.Net中WebForm生命周…

    编程技术 2025年3月3日
    200
  • Asp.Net中WebForm的生命周期相关讲解

    这篇文章主要给大家介绍了关于asp.net中webform生命周期的相关资料,文中介绍的非常星系,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。 前言 本文主要给大家介绍的是关于Asp.Net中WebForm生命周…

    编程技术 2025年3月3日
    200
  • 制作NetCore WebSocket即时通讯实例详解

    这篇文章主要为大家详细介绍了netcore websocket即时通讯示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 NetCore WebSocket 即时通讯示例,供大家参考,具体内容如下 1.新建Netcore Web项目 2…

    2025年3月3日 编程技术
    200
  • 详细介绍C# 中 ASP.NET Web API 的 ROC

    web api 是一个 面向资源(ROC)  通过 HTTP协议动词来修改资源状态的可自我寄宿(SelfHost)的接口今天 seaconch 的主要目的是实现一个简单的 ASP.NET Web API 栗子 什么是Web API 谈谈re…

    2025年3月3日 编程技术
    200
  • webApi怎么调用

    webapi怎么调用?如何使用程序调用webapi接口? 在C#中,传统调用HTTP接口一般有两种办法: 1.WebRequest/WebResponse组合的方法调用 2.WebClient类进行调用。 第一种方法抽象程度较低,使用较为繁…

    2025年3月3日
    200
  • 使用Beego框架实现快速API开发

    随着互联网的快速发展,api(应用程序接口)成为了越来越重要的一部分。api不仅可以帮助开发者更快速地构建应用程序,还可以提高应用程序的灵活性和可扩展性。然而,api的开发不是一件简单的事情。为了实现快速的api开发,我们可以使用beego…

    编程技术 2025年3月2日
    200
  • 在Go语言中使用GraphQL构建API的最佳实践

    随着前后端分离的趋势越来越普及,api的设计和使用也变得越来越重要。在go语言中使用graphql构建api是一种流行的选择,因为graphql允许前端开发人员按照自己的需求从后端获取数据。然而,graphql具有独特的设计和属性,开发人员…

    编程技术 2025年3月2日
    200
  • Golang web项目搭建-1

    项目类型 项目搭建系列先选取的是最为常见的web项目。 开发环境-Mac、Windows、linux 开发环境的选取随意吧,毕竟Go也是跨平台的。 开发工具-Goland 开发工具的选取,因人而异吧,我主要使用Goland,新手的话还是比较…

    编程技术 2025年3月2日
    200

发表回复

登录后才能评论