我正在使用代理文件來允許我們的系統使用ajax從我們系統的不同子域中加載頁面。我第一次嘗試就成功完成了這個任務,但是我的第二次嘗試卻給了我一個錯誤,而且我正在努力解決原因,希望能得到任何幫助。遠程服務器返回錯誤:(404)未找到 - HttpWebResponse
首先這是我Proxy.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
string proxyURL = HttpUtility.UrlDecode(Request.QueryString["u"]);
if (proxyURL != string.Empty)
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(proxyURL);
request.Method = "POST";
request.ContentLength = 0;
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
if (response.StatusCode.ToString().ToLower() == "ok")
{
string contentType = response.ContentType;
Stream content = response.GetResponseStream();
if (content != null)
{
StreamReader contentReader = new StreamReader(content);
Response.ContentType = contentType;
Response.Write(contentReader.ReadToEnd());
}
}
}
}
我的HTML/JavaScript是隻是這樣的:
<script>
$(document).ready(function() {
$.ajax({
type: "POST",
url: "Proxy.aspx?u=<%=GetUrl()%>",
success: function (data) {
$('#iFrameHolder').html(data);
}
});
});
</script>
<div id="iFrameHolder"></div>
然後我使用getURL()函數來建立的網址無論我在子域上的項目需要什麼頁面。
我得到這個在所有的工作沒有問題,一個網址,但第二次嘗試,我收到此錯誤:
System.Net.WebException: The remote server returned an error: (404) Not Found.
at System.Net.HttpWebRequest.GetResponse()
at G2F.Collective.WebApplication.Shared.Proxy.Page_Load(Object sender, EventArgs e)
in D:\My Documents\Firefly\Collective\Dev\Solution\WebSites\G2F.Collective.WebApplication\Shared\Proxy.aspx.cs:line 26
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
那對我會建議什麼是錯的我的網址正在建設,但使用Chrome的Web開發人員工具我可以複製傳遞給代理的確切查詢字符串,將其粘貼到瀏覽器地址欄中,然後訪問該頁面而不會有任何問題,這意味着正在構建的網址沒有問題。所以我不知道爲什麼這個返回404。如果有人可以給我任何建議,我將不勝感激。
儘量不要從Chrome瀏覽器開發工具複製,但要保持斷點.NET代碼,看看你得到並傳遞到Web請求的URL,希望這將有助於 –
也嘗試過,它構建的網址肯定可以在瀏覽器中使用,但它仍然是404的,當它碰到GetResponse() – VampiricMonkey