2

所以我正在尝试使用自定义订户 SDK for Growl for Windows。尝试动态创建 RSS 提要。使用 C#,带有 Razor 视图。这是我指向订阅者 url 的视图的示例:

@model GrowlExtras.Subscriptions.FeedMonitor.FeedItem
<?xml version="1.0" encoding="UTF-8" ?>

@{
    Response.ContentType = "application/rss+xml";
    ViewBag.Title = "Feed";
}

<rss version="2.0">
    <channel>
        <title>@Model.Title</title>
        <link>@Url.Action("Feed", "Home", null, "http")</link>
        <description>@Model.Description</description>
        <lastBuildDate>@Model.PubDate</lastBuildDate>
        <language>en-us</language>
    </channel>
</rss>

使用此 url 在本地(目前)访问此页面:http://localhost:2751/Home/Feed。所以,我将这个 url 作为“订阅通知弹出窗口”上的“Feed Url:”.. 但是收到错误“无法解析 feed”并且 OpenReadCompletedEventArgs e 结果引发异常“OpenReadCompletedEventArgs '(e .Result).Length' 引发了“System.NotSupportedException”类型的异常”

欢迎任何帮助!我是在这里完全找错了树,还是只是在提要文件的格式上遗漏了一些东西?不要认为这与页面目前在本地托管的事实有关吗?

4

2 回答 2

1

真正的答案是 Razor 会验证您尝试编写的内容是否是有效的 HTML。如果你不这样做,Razor 就会失败。

您的代码试图编写不正确的 HTML:

如果您查看w3schools 中链接标签的文档,您可以阅读以不同方式表达的相同内容:

  • “该元素是一个空元素,它只包含属性。”
  • “在 HTML 中,标签没有结束标签。”

这意味着链接是一个单例标签,因此您必须将此标签写为自闭合标签,如下所示:

<link atrib1='value1' attrib2='value2' />

所以你不能做你想做的事情:使用带有内容的开始和结束标签。

这就是 Razor 无法生成此<xml>文档的原因。

但是有一种方法可以欺骗 Razor:不要让它知道你正在编写标签,如下所示:

@Html.Raw("<link>")--your link's content--@Html.Raw("</link>")

请记住,Razor 用于编写 HTML,因此使用它编写 XML 可能会有些棘手。

于 2013-02-23T21:40:57.187 回答
0

对。现在整理好了这个。

需要更多的挖掘!上面的页面没有正确解析为有效的 xml 页面,例如 - 此处正在生成 html 标记,这会引发相关插件的 rss 解析器。

我最终做的是使用内置的 RSS Syndication 类,并从这些帖子/有关该主题的相关答案中获得一些帮助。

<http://stackoverflow.com/a/825016/1152015>
<http://stackoverflow.com/a/684518/1152015>
<http://stackoverflow.com/a/1292769/1152015>
<http://stackoverflow.com/a/2690302/1152015>
<http://stackoverflow.com/a/3098559/1152015>
<http://msdn.microsoft.com/en-us/library/bb412174>

所以,澄清一下 - 我有使用 rss 提要的代码,但是动态生成的页面没有被我使用的解析器正确解析。

于 2012-07-23T08:45:38.960 回答