mscorlib.dll中出现“System.ArgumentException”类型的异常,附加信息:路径中的非法字符

时间:2016-10-23 11:33:11

标签: c# asp.net

我正在编写两个函数:gridview文件的下载和删除功能 所以基本上每当点击下载按钮时,它都会检查字段Games_RulesBooklet的文件名,然后下载名称位于“〜/ AppData / RulesData /”里面的文件。我成功地操纵了附加功能。但我似乎无法下载我附加到RulesData

的特定文件

每当我尝试下载时,都会弹出错误:

errors 这些行在cs文件中:

protected void DownloadFile(object sender, EventArgs e)
{

        string filePath = (sender as LinkButton).CommandArgument;
        Response.ContentType = ContentType;
        Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + Path.GetFileName(filePath)+ "\"");
        Response.WriteFile("~/AppData/RulesData" + filePath);
        Response.End();
}

protected void DeleteFile(object sender, EventArgs e)
{
    string filePath = (sender as LinkButton).CommandArgument;
    File.Delete(filePath);
}

这些行在我的aspx文件中:

下载:

<asp:LinkButton ID="lnkDownload" CommandArgument ='<#% Eval("Game_RulesBooklet") %>' Text="Download" runat="server" OnClick ="DownloadFile"></asp:LinkButton>

删除:

<asp:LinkButton ID = "lnkDelete" Text = "Delete" CommandArgument  ='<#% Eval("Game_RulesBooklet") %>' runat = "server" OnClick = "DeleteFile" />

2 个答案:

答案 0 :(得分:0)

问题似乎在于您编写此响应的路径。 请提供以下格式的路径 Response.WriteFile(&#34;〜\\ AppData \\ RulesData \\&#34; + filePath);

或者您甚至可以使用 Server.MapPath

filepath的值不应为空,请添加检查以避免这种情况。

答案 1 :(得分:0)

通过移动主题标签来修复代码 由此 '<#% Eval("Game_RulesBooklet") %>' 对此 '<%#Eval("Game_RulesBooklet") %>'