从Controller Action返回RDF - ASP.NET MVC

时间:2010-12-12 21:02:57

标签: c# .net asp.net-mvc rdf mvccontrib

我有一个控制器操作,它将RDF文档作为XML返回给浏览器。浏览器抱怨无法显示文档:

  

不允许名称空间前缀以保留字符串“xml”开头。处理资源时出错

我试图使用MCVContrib的XMLResult对象将文档写入响应流。如何将此文档正确显示在浏览器中?我是否不得不求助于写一个简单的字符串?

 public ActionResult Content(string id, string version, string localization)
    {
        IDocumentRequest request = new ResourceRequest()
                                       {
                                           Id = id,
                                           Localization = Localization.GetByName(localization),
                                           Version = version
                                       };

        XmlDocument doc = _kbModel.GetContent(request);

        return new XmlResult(doc);
    }

2 个答案:

答案 0 :(得分:0)

RDF有一个不同的MIME类型,感谢XML。 XMLResult将MIME类型设置为“application / xml”,RDF需要的是“application / rdf + xml”。您需要设置本手册,或者您可以创建自己的ActionResult来设置它。

参见:http://www.w3.org/TR/rdf-syntax-grammar/#section-MIME-Type

答案 1 :(得分:0)

您在归档文档的根目录中有 xml namespace (as 'xmlns:xml="..."')

您正在使用等于Microsoft XML (MSXML)或更低的旧Microsoft XML Core Services version 4.0解析器。 更新last version of MSXML

原因:您在返回的XML文档中使用名称空间前缀中的一个/一些Microsoft XML(MSXML)关键字,即xml

例如,在返回的xml文档中有一个名为xmlMyProject的命名空间。请注意,xml大写无关紧要,即XMLMyProjectXmlMyProject ......