2013-04-23 109 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其他相关问题。

相关问题