2011-11-07 1 views
1

jqueryと(aspx)プロキシを使用してリモートRSSフィードをロードしようとしています。私はこの問題に関してたくさんの質問を読んだが、私のものはやや異なっている。
私はユーザーのサブスクリプションを含むXMLファイルを持っています。各エントリについて、私はいくつかのフィードを読み込みたい、最初の3つのフィードを言う。
サブスクリプションのリストを正しく取得できますが、フィードエントリを取得できません。プロキシは、この例外を与え続け:プロキシaspが外部のXMLをロードしない

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フィードを作ることができますか?
ご協力いただきありがとうございます。ありがとう!

答えて

1

私はこの問題を解決しました。私は、あなたがいつもerror 500(これは以前のバージョンのIISでも当てはまりますが、これはチェックできないかもしれません)を得るために、.NET 4 ASPをインストールした後にIISをインストールするとIISに自身を登録しないと思います。 ソリューションは、コマンドラインを開きます(私は管理者としてやった)とのフォルダに移動することです:

cd %windir%/Microsoft.NET/Framework/v4.xxxxx/ 
aspnet_regiis.exe -i 

今、あなたは、行く楽しむために良いはずです!

+1

[MSDN](http://www.varindersandhu.in/2010/12/13/asp-net-iis-registration-tool-aspnet_regiis-exe/)でこのツールに関するもう少し情報があります。おかげさまで、ありがとう! –

3

これは、コードのバグよりもネットワーク/接続の問題のようです。

フィードのURLに「手動で」接続できますか?たぶん、いくつかのプロキシが...

いくつかの発言それらへのアクセスをブロックしている:

  • ジョブのこれらの種類を行うには、それが(フルを避けるために、代わりにASPXページののhttpHandlersを使用することをお勧めしますと、時間/リソースの消費)Page Lifecycle。 Encosia hereにこれについての非常に興味深い記事があります。

  • jquery ajax optionsオブジェクトのdataプロパティを使用して、データを渡し、現在実行中のクエリーストリングを構築しない方が良いです。

これは少し役に立ちます。d。

+0

HttpHandlerアドバイスありがとうございます。私はそれが私が正確に探していたように変わった!問題については、私の答えを読んでください。 – andreapier

関連する問題