我正在尝试使用jquery和(aspx)代理加载远程rss feed。我在这个问题上读了很多问题,但我的情况略有不同 我有一个XML文件,其中包含用户的订阅。对于每个条目,我想加载一些Feed,比如说前三个Feed 我可以正确检索订阅列表但我无法获取订阅源条目。代理不断给出这个例外:
Riga 22: HttpWebRequest request = (HttpWebRequest) WebRequest.Create(proxyURL);
Riga 23: request.Method = "GET";
Riga 24: HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Riga 25:
Riga 26: if (response.StatusCode.ToString().ToLower() == "ok")
[SocketException (0x274c): Impossibile stabilire la connessione. Risposta non corretta della parte connessa dopo l'intervallo di tempo oppure mancata risposta dall'host collegato 213.92.16.191:80]
System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +269
System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) +649
[WebException: Impossibile effettuare la connessione al server remoto.]
System.Net.HttpWebRequest.GetResponse() +1126
Proxy.Page_Load(Object sender, EventArgs e) in c:\Users\andrea\documents\visual_studio_2010\websites\leafhouse\Proxy.aspx.cs:24
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
System.Web.UI.Control.OnLoad(EventArgs e) +132
System.Web.UI.Control.LoadRecursive() +66
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428
这是我的proxy.aspx页面:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;
public partial class Proxy : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string proxyURL = string.Empty;
try
{
proxyURL = HttpUtility.UrlDecode(Request.QueryString["u"].ToString());
if (proxyURL != string.Empty)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(proxyURL);
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode.ToString().ToLower() == "ok")
{
string contentType = response.ContentType;
Stream content = response.GetResponseStream();
StreamReader contentReader = new StreamReader(content);
Response.ContentType = contentType;
Response.Write(contentReader.ReadToEnd());
}
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
这是我使用的jquery:
$.ajax({
type: "GET",
url: "proxy.aspx?u=" + encodeURI("http://" + serverAddress + ":82") + "/RSSReaderSubscriptions.xml",
dataType: "xml",
success: function (data) {
$(data).find('url').each(function (index, element) {
if (index < 3) {
$.ajax({
type: "GET",
url: "proxy.aspx?u=" + encodeURI($(this).text()),
dataType: "xml",
success: function (data) {
parseRSS(data);
},
error: function () {
console.log("error");
});
}
});
},
error: function () {
console.log("error");
});
如何让代理加载RSS Feed? 任何帮助是极大的赞赏!谢谢!
答案 0 :(得分:3)
这看起来更像是网络/连接问题,而不是代码中的错误。
您可以“手动”连接到Feed的网址吗?也许某些代理阻止访问它们......
一些评论:
要做这些工作,最好使用HttpHandlers而不是aspx页面来避免完全(和时间/资源消耗)Page Lifecycle。在Encosia here上有一篇非常有趣的文章。
最好使用jquery ajax选项对象的data
属性来传递数据,而不是像现在一样构造查询字符串。
希望这有点帮助,d。
答案 1 :(得分:1)
我解决了这个问题。我认为,如果您安装IIS后安装.NET 4 Asp不会将自己注册到IIS,因此您总是得到error 500
(也许对于以前版本的IIS也是如此,但我无法检查这一点)。
解决方案是打开命令行(我以管理员身份执行)并移动到文件夹:
cd %windir%/Microsoft.NET/Framework/v4.xxxxx/
aspnet_regiis.exe -i
现在你应该好好去,享受!