.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;
}
}
}
SitemapControllerController
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
}
}
最终效果如图

.net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)的更多相关文章
- sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml
Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页.最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间.更改的 ...
- 帝国CMS如何自动生成sitemap.xml网站地图文件
登录网站的后台http://你的域名/e/admin/ 进入后台栏目 =>增加自定义页面 =>选择直接页面,页面名称为:网站地图,文件名修改为 ../../sitemap.xml 内容填 ...
- 网站robots.txt & sitemap.xml
1. 如何查看网站的robots.txt 网址/robots.txt, 比如小米 https://www.mi.com/robots.txt sitemap.xml
- AJAX请求返回JSON数据动态生成html
1:DeliveryPersonVO对象 package com.funcanteen.business.entity.delivery.vo; import java.util.List; impo ...
- php动态生成一个xml文件供swf调用
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdo ...
- 根据xml配置使用反射动态生成对象
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="htt ...
- 请求*.html后缀无法返回json数据的问题
在springmvc中请求*.html不可以返回json数据. 修改web.xml,添加url拦截格式.
- C# XML与Json之间相互转换实例详解
对于这转换其实很简单,其中最重要的就是先要引用类库.可以到官网进行下载引用http://json.codeplex.com. XML转换为Json字符串 string xml = @"< ...
- WordPress免插件生成完整站点地图(sitemap.xml)的php代码
让这个代码更加完善,可以同时生成首页.文章.单页面.分类和标签的 sitemap! 一.PHP 代码 <?php require('./wp-blog-header.php'); header( ...
随机推荐
- Visual Studio调试到OpenCV源码中
TL;DR VS2015下,build-farm/vs2015-x64/bin/Debug/目录,*.pdb文件,都拷贝到install/x64/vc14/bin目录,就可以调试进去opencv源码了 ...
- Linux shell之重定向输入,输出
shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户.这种对话方式可以是交互的方式(从键盘输入命令 ...
- WebVTT字幕格式
[时间:2019-05] [状态:Open] [关键词:字幕,vtt,webvtt, 文件格式,cue,css] 0 引言 WebVTT(Web Video Text Tracks),通过HTML5中 ...
- Python面试题(4)
1.Python下多线程的限制以及多进程中传递参数的方式 Python多线程有个全局解释器锁,这个锁的意思是任一时间只能有一个线程运用解释器.并发不是并行. 多进程间同享数据,能够运用multipro ...
- Python 加入类型检查
Python 是一门强类型的动态语言, 对于一个 Python 函数或者方法, 无需声明形参及返回值的数据类型, 在程序的执行的过程中, Python 解释器也不会对输入参数做任何的类型检查, 如果程 ...
- html--前端javascript初识
一.JavaScript简介 JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言,有了JavaScript,可使网页变得生动.使用它的目的是与HTML超文本标识语言.Java 脚本语 ...
- 可怕的Full GC (转自Hbase不睡觉书)
PS:之前做项目的时候,需要做个复杂的查询,大量的查询总是导致hbase集群奔溃,最后定位到时full GC的原因. 以下转自<Hbase不睡觉书>-------------------- ...
- 网页网站基础入门篇: 使用Adobe Dreamweaver CS6 制作网页/网站
咱开发网页或者网站呢,最好使用个软件,我使用的是Adobe Dreamweaver CS6 (自行下载安装) 打开软件 现在呢咱使用 html5 <!doctype html> <h ...
- priority_queue(优先队列)使用方法
priority_queue默认是一个大根堆: 并且出队方式与普通队列queue的front不一样,是top . 如果想用小根堆,可以修改定义时的参数: priority_queue<int,v ...
- centos7 中没有service iptables save指令来保存防火墙规则
解决方法: systemctl stop firewalld 关闭防火墙yum install iptables-services 安装 iptables 服务systemctl enable ip ...