WPF中添加webapi

这篇具有很好参考价值的文章主要介绍了WPF中添加webapi。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、集成 SelfHost

现在已有的资料中,使用 SelfHost 做自宿主服务的基本都是用控制台实现 WebAPI 的功能,或者在 WinFrom 中集成。WFP 和这些还是有挺大的区别。 我这里是参考了这个文章:Self-Host 
具体的步骤如下: 
1. 添加引用包 
在 NuGet 中添加 “Microsoft.AspNet.WebApi.SelfHost”和“Microsoft.AspNet.WebApi.Cors”库,其他依赖的类库基本都会添加进来 
2. 初始化服务 
新建类 “InitConfig”在类里添加初始化自宿主的一些设置。 
具体代码如下:

public static HttpSelfHostConfiguration InitSelfHostConfig(string baseAddress)
        {
            // 配置 http 服务的路由
            // 地址实例:http://10.17.125.183:8848/api/home/PostMeasuring
            // 加了{action}后,一个类写多个方法
            HttpSelfHostConfiguration config = new HttpSelfHostConfiguration(baseAddress);
            config.Routes.MapHttpRoute(
                "API Default", "api/{controller}/{action}/{id}",
                new { id = RouteParameter.Optional }
            );

            // 设置跨域
            var cors = new EnableCorsAttribute("*", "*", "*"); //跨域允许设置
            config.EnableCors(cors);

            config.Formatters
               .XmlFormatter.SupportedMediaTypes.Clear();

            //默认返回 json
            config.Formatters
                .JsonFormatter.MediaTypeMappings.Add(
                new QueryStringMapping("datatype", "json", "application/json"));

            //返回格式选择
            config.Formatters
                .XmlFormatter.MediaTypeMappings.Add(
                new QueryStringMapping("datatype", "xml", "application/xml"));

            //json 序列化设置
            config.Formatters
                .JsonFormatter.SerializerSettings = new
                Newtonsoft.Json.JsonSerializerSettings()
                {
                    //NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore,
                    DateFormatString = "yyyy-MM-dd HH:mm:ss" //设置时间日期格式化
                };
            return config;
        }

3. 添加 Program 类

WPF 默认是没有这个类的,需要自己手动添加这样的一个类。

这个类的代码:

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
    string baseAddress = string.Format("http://{0}:{1}/",
           System.Configuration.ConfigurationManager.AppSettings.Get("Domain"),
           System.Configuration.ConfigurationManager.AppSettings.Get("APIPort"));
    using (var server = new HttpSelfHostServer(InitConfig.InitSelfHostConfig(baseAddress)))
    {
        server.OpenAsync().Wait();
        Console.WriteLine(String.Format("host 已启动:{0}", baseAddress));
        //实例化主窗口
        App app = new App();
        app.Run();
    }
}

停止运行时想要完全退出程序需要在主窗口退出时间添加这个 (原理暂未理清)wpf webapi,wpf,microsoft

 Environment.Exit(0);

其中 baseAddress 是拼接的服务地址,同时在“属性”里设置项目的启动对象为“Program”。

wpf webapi,wpf,microsoft

 

后面添加一些 API 进行测试。

public class HomeController : ApiController
{
        [Route("PostCCD")]
        [HttpPost]
        public object PostCCD([FromBody] string str)
        {
            
            return new { code = 1, success = true, msg = "成功" };
        }

        [Route("PostMeasuring")]
        [HttpPost]
        public object PostMeasuring([FromBody] string str)
        {
           
            return new { code = 1, success = true, msg = "成功" };

        }
}

注:添加API后需以管理员身份运行程序文章来源地址https://www.toymoban.com/news/detail-572544.html

到了这里,关于WPF中添加webapi的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Microsoft Azure和WPF实现人脸检测

    在本文中,详解如何使用Microsoft Azure和WPF技术的帮助下使用实现人脸API应用程序。该应用程序检测人脸图像,显示每张脸周围的红框,以及通过将光标移动到框来显示每张脸的描述的状态栏。 先决条件 在 Azure 门户中创建人脸 API。 在 WPF 应用程序中访问和管理人脸 API 密钥。

    2024年02月09日
    浏览(42)
  • WPF之Microsoft.Toolkit.Mvvm(一)

    WPF编程中使用MVVM框架开发步骤。 第一步: 安装package从nuget: Microsoft.Toolkit.MVVM 和Microsoft.Xaml.Behaviors.Wpf和PropertyChanged.Fody 入下图所示: 第二步:引用命名空间、新建View文件夹、ViewModel文件夹 在Model和ViewModel中引入命名空间如下图所示:                         

    2024年02月04日
    浏览(54)
  • Microsoft.Xaml.Behaviors.Wpf 的使用

    System.Windows.Interactivity.WPF这个已经过时,可以使用 Microsoft.Xaml.Behaviors.Wpf ,基本使用查不多,

    2024年02月13日
    浏览(51)
  • WPF使用Microsoft.Toolkit.Mvvm框架记录

    前言 为了解决WPF UI与程序逻辑之间得到解耦,所以使用Microsoft.Toolkit.Mvvm框架来实现,说真的开发逻辑真的有些不适应,不过理解就好。框架大体支持ICommand、IMessenger等。 MVVM是Model-View-ViewModel的简写。它本质上就是MVC (Model-View- Controller)的改进版。即模型-视图-视图模型。分

    2024年02月13日
    浏览(49)
  • wpf 按钮添加图标

    或者App.xaml不修改,直接写成下面那种

    2024年02月12日
    浏览(44)
  • WPF按钮添加图片

    WPF Button添加图片 0、更改模板 效果: 代码: 1、原生态 效果: 代码:  2、去边框图片按钮 示意图: 自定义控件源码 xaml cs 使用源码: 3、纯文字按钮 效果图: 自定义控件 XAML CS 使用:

    2024年02月06日
    浏览(40)
  • wpf 为自定义控件添加滚动条

    在WPF中为自定义控件添加滚动条通常涉及将自定义控件置于 ScrollViewer 控件内,并根据需要配置ScrollViewer的属性。以下是一个基本步骤说明: 创建自定义控件 :首先,你有一个自定义控件(比如名为 RWrapPanel ,继承自 WrapPanel 并实现 IScrollInfo 接口以进行平滑滚动管理)。 嵌

    2024年02月01日
    浏览(40)
  • WPF实战学习笔记23-首页添加功能

    实现ITodoService、IMemoService接口,并在构造函数中初始化。 新建 ObservableCollectionToDoDto 、 ObservableCollectionMemoDto 类型的属性,并将其绑定到UI中 修改Addtodo、Addmemo函数,将添加功能添加 添加添加函数 修改文件:Mytodo.ViewModels.IndexViewModel.cs

    2024年02月15日
    浏览(41)
  • WPF实战学习笔记30-登录、注册服务添加

    添加注册数据类型 添加注册UI 修改bug UserDto的UserName更改为可null类型 Resgiter 添加加密方法 修改控制器 添加注册数据类型 添加文件MyToDo.Share.Models.ResgiterUserDto.cs 添加注册UI 修改文件:Mytodo.Views.LoginView.xaml 添加注册、登录、退出等功能实现以及功能的字段 修改bug UserDto的User

    2024年02月14日
    浏览(34)
  • [C# WPF] 如何给控件添加边框(Border)?

    在WPF中,可以使用边框控件或者边框属性来为控件添加边框。 以下是两种常见的方法: WPF中的Border控件用于为其他控件添加边框效果。它是一个容器控件,可以包含一个子元素,并为其提供边框、背景和填充等装饰效果。 以下是Border控件的一些主要属性: BorderBrush:用于定

    2024年02月20日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包