2

そのため、Growl for Windows のカスタム サブスクライバー SDK を使用しようとしています。RSS フィードを動的に作成しようとしています。Razor ビューで C# を使用する。これは、サブスクライバーの 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:」として入力していますが、「フィードを解析できませんでした」というエラーが発生し、OpenReadCompletedEventArgs e の結果は例外「OpenReadCompletedEventArgs '(e .Result).Length' がタイプ 'System.NotSupportedException' の例外をスローしました"

どんな助けでも大歓迎です! ここで完全に間違ったツリーを吠えていますか、それともフィード ファイルのフォーマットで何かが欠けているだけですか? ページが現在ローカルでホストされているという事実と関係があると思いませんか?

4

2 に答える 2

1

本当の答えは、書き込もうとしているものが有効な HTML であることを Razor が検証することです。そうしないと、Razor は失敗します。

あなたのコードは間違った HTML を書き込もうとしました:

w3schools の link タグのドキュメントを見ると、同じことをさまざまな方法で表現できます。

  • 「要素は空の要素です。属性のみが含まれています。」
  • 「HTML では、タグに終了タグがありません。」

これが意味することは、link がシングルトン タグであるため、このタグを次のように自己終了タグとして記述する必要があるということです。

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

したがって、あなたがやろうとしていたことを行うことはできません: 内容を含む開始タグと終了タグを使用してください。

そのため、Razor はこの<xml>ドキュメントを生成できません。

しかし、Razor をだます方法が 1 つあります。次のように、タグを書いていることを 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 に答える