2013-04-23 108 views
0

當我寫的代碼允許..用於訪問路徑的HTTP動詞後是不是在asp.net

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
     PostBackUrl="~/Biodata.xls" Text="Button" /> 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Server.Transfer("a.aspx"); 
} 

我得到如下的錯誤。

用於訪問路徑'/WebSite4/Biodata.xls'的HTTP動詞POST是不允許的。

這裏我試圖在下載xls文件後將頁面重定向到另一個頁面。

+0

爲什麼不用'Response.Redirect()'來代替? – DGibbs 2013-04-23 09:29:23

+0

同樣的事情會發生,如果我寫Response.Redirect() – SoumitaP 2013-04-23 09:32:01

回答

1

您現在看到的這部分:

Server.Transfer("a.aspx"); 

但錯誤信息指的是這一部分:

PostBackUrl="~/Biodata.xls" 

不要回發到XLS文件。這不是下載內容的方式。而且你不能「下載某些東西然後重定向到別的地方」。這不是HTTP請求和響應的工作方式。

瀏覽器請求你的頁面。你正在回覆回覆。

  1. 您可以將作業轉換爲a.aspx。然後是a.aspx的工作來返回響應。

  2. 或者您可以使用xls文件本身進行響應,並在HTTP標頭中使用適當的內容類型和配置。你會使用類似Response.BinaryWrite,something like this.然後,它取決於瀏覽器如何處理它。瀏覽器可以使用Excel之類的東西打開它,或者它可以爲用戶提供一個保存文件的機會。

你不能做這兩件事情。你必須選擇。

另請參閱herehere其他相關問題。

相關問題