c# - ASP.Net C# MVC5 Razor 查看 XML 站点地图

标签 c# asp.net razor asp.net-mvc-5

我的 Controller 操作看起来像这样。

public ActionResult Sitemap()
        {
            Response.ContentType = "application/xml";
            return View();
        }

My View Sitemap.cshtml 看起来像这样。

@{Layout = null;}<?xml version='1.0' encoding='UTF-8' ?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemalocation="http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
    <url>
        <loc>https://www.mywebsitename.com/home</loc>
        <lastmod>2006-12-12</lastmod>
        <changefreq>weekly</changefreq>
        <priority>1.00</priority>
    </url>
</urlset>

我在浏览器中遇到页面错误 (http://localhost:50831/Sitemap)

This page contains the following errors:

error on line 2 at column 6: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.

我已从 View (Sitemap.cshtml) 中删除所有空格。但还是报错

我什至试过this并如下所示反转顺序但仍然错误。

<?xml version='1.0' encoding='UTF-8' ?>
@{    Layout = null;}
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemalocation="http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
    <url>
        <loc>https://www.mywebsitename.com/home</loc>
        <lastmod>2006-12-12</lastmod>
        <changefreq>weekly</changefreq>
        <priority>1.00</priority>
    </url>
</urlset>

它似乎在导致上述错误的标题之前发送了空格或行。 布局为 null, View 以 xml 标记开始,并从那里获得空白空间。

页面源码输出

----EMPTY LINE----
        <?xml version='1.0' encoding='UTF-8' ?>
        <urlset xmlns="http://www.google.com/schemas/sitemap/0.84"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemalocation="http://www.google.com/schemas/sitemap/0.84
        http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
            <url>
                <loc>https://www.mywebsitename.com/home</loc>
                <lastmod>2006-12-12</lastmod>
                <changefreq>weekly</changefreq>
                <priority>1.00</priority>
            </url>
        </urlset>

我无法理解为什么?有什么想法吗?

我检查了以下但仍然找不到答案

How to create XML sitemap programmatically in c#

sitemaps.xml in asp.net mvc

ASP.NET Web.sitemap to Generate sitemap.xml

最佳答案

我通过在 Response.Write 中添加 XML 标记解决了这个问题

@{   
    Response.Write("<?xml version='1.0' encoding='UTF-8' ?>");
    Layout = null;
    }
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemalocation="http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
    <url>
        <loc>https://www.mywebsitename.com/home</loc>
        <lastmod>2006-12-12</lastmod>
        <changefreq>weekly</changefreq>
        <priority>1.00</priority>
    </url>
</urlset>

感谢EvanSwd

关于c# - ASP.Net C# MVC5 Razor 查看 XML 站点地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26910044/

相关文章:

javascript - 页面加载时 Bootstrap 警报危险隐藏

c# - 在最新的 Razor 引擎中找不到 "image/subfolder"下的图像 - MVC.NET

c# 嵌套字典,更好的选择?最好地组织三个类别的数据

C# 以编程方式访问 Excel 宏

asp.net 3.5升级到4.0 IIS6 ReturnURL问题

c# - 类型 '' 未映射

node.js - ExpressJS 的 Razor View 引擎

c# - 确定图像整体亮度

c# - 在 WebApi 中支持 GET * 和 * POST

c# - Uncaught ReferenceError : __doPostBack is not defined