• .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)


    .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)

    首先设置 Startup.cs 文件

    • 配置 ConfigureServices
                services
                    .AddMvc(options =>
                    {
                        options.RespectBrowserAcceptHeader = true;
                        options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
                        options.FormatterMappings.SetMediaTypeMappingForFormat("xml", Microsoft.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/xml"));
                        options.FormatterMappings.SetMediaTypeMappingForFormat("config", Microsoft.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/xml"));
                        options.FormatterMappings.SetMediaTypeMappingForFormat("js", Microsoft.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"));
                    })
                    .AddXmlSerializerFormatters()
                    .AddDataAnnotationsLocalization()
                    .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    

    例子:生成sitemap.xml

    • 返回值 Urlset
    using System.Collections.Generic;
    using System.Xml.Serialization;
    
    namespace MyFramework.Services.Sitemaps.Dtos
    {
        [XmlRoot(Namespace = "http://www.sitemaps.org/schemas/sitemap/0.9")]
        [XmlType("urlset")]
        public class Urlset
        {
            [XmlElement("url")]
            public List<Url> Urls { get; set; }
        }
    }
    
    using System.Xml.Serialization;
    
    namespace MyFramework.Services.Sitemaps.Dtos
    {
        [XmlType("url")]
        public class Url
        {
            public string loc { get; set; }
            public string priority { get; set; }
            public string lastmod { get; set; }
            public string changefreq { get; set; }
        }
    }
    
    • GetUrlset 方法
    using MyFramework.Services.Sitemaps.Dtos;
    using System;
    using System.Collections.Generic;
    
    namespace MyFramework.Services.Sitemaps
    {
        public class SitemapService : ServiceBaseModule, ISitemapService
        {
            public Urlset GetUrlset()
            {
                var __baseUrl = new List<Url>
                {
                    new Url{ loc="http://www.mywebsite.com",priority="1.00",lastmod= DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"),changefreq="weekly"},
                    new Url{ loc="http://www.mywebsite.com/Home",priority="1.00",lastmod= DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"),changefreq="weekly"},
                    new Url{ loc="http://www.mywebsite.com/Home/Index.html",priority="1.00",lastmod= DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"),changefreq="weekly"},
                };
    
                for (var i = 0; i < 10; i++)
                {
                    __baseUrl.Add(new Url { loc = "http://www.mywebsite.com/news/news-" + i + ".html", priority = "1.00", lastmod = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"), changefreq = "daily" });
                }
    
                var __urlset = new Urlset
                {
                    Urls = __baseUrl
                };
                return __urlset;
            }
        }
    }
    
    • SitemapController Controller
    using Microsoft.AspNetCore.Mvc;
    using MyFramework.Services.Sitemaps;
    using MyFramework.Services.Sitemaps.Dtos;
    
    namespace MyFramework.Web.Api.Controllers
    {
        [Route("")]
        [ApiController]
        public class SitemapController : ControllerBase
        {
            #region Initialize
            private readonly ISitemapService _sitemapService;
            public SitemapController(ISitemapService sitemapService)
            {
                _sitemapService = sitemapService;
            }
            #endregion
    
            #region Methods
            [HttpGet("sitemap.{format}"), FormatFilter]
            public Urlset GetSitemap()
            {
                return _sitemapService.GetUrlset();
            }
            #endregion
        }
    }
    

    最终效果如图

  • 相关阅读:
    tensorboard使用命令
    FFmpeg安装以及视频转成图片_图片转成视频_以及分辨率转换
    yolo3各部分代码详解(超详细)
    OpenCV+python 彩色图像通道拆分与组合并判断size,shape函数的用法与区别
    基于Keras 的VGG16神经网络模型的Mnist数据集识别并使用GPU加速
    以Mnist为例从头开始自己建立数据集,搭建resnet34,识别Mnist
    2017年Brats 脑肿瘤挑战赛Automatic Brain Tumor Segmentation using Cascaded Anisotropic Convolutional Neural Networks
    2018年BRATS 肿瘤分割挑战赛第三名分割方案One-pass Multi-task Networks with Cross-task Guided Attention for Brain Tumor Segmentation
    脑胶质瘤论文笔记
    .npy文件的保存与加载
  • 原文地址:https://www.cnblogs.com/WNpursue/p/11160958.html
Copyright © 2020-2023  润新知