有问题显示来自wwwroot文件夹

时间:2015-10-01 03:01:52

标签: c# asp.net

目标:

我们计划将图像从Project文件夹移动到C OR D驱动器(项目所在的其他文件夹。

我选择的方法

http://www.aspsnippets.com/Articles/Displaying-images-that-are-stored-outside-the-Website-Root-Folder.aspx

IamgeDisplayPage.aspx

<asp:image ID="Image4" runat="server" ImageUrl ="TestPage.aspx?FileName=TestJPG.jpg"/>

TestPage.aspx.cs

try
{
    // Read the file and convert it to Byte Array
 string filePath = "C:\\images\\";
    string filename = Request.QueryString["FileName"];
    string contenttype = "image/" +
    Path.GetExtension(Request.QueryString["FileName"].Replace(".","");
    FileStream fs = new FileStream(filePath + filename,
    FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(fs);
    Byte[] bytes = br.ReadBytes((Int32)fs.Length);
    br.Close();
    fs.Close();

    //Write the file to response Stream
    Response.Buffer = true;
    Response.Charset = "";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.ContentType = contenttype;
    Response.AddHeader("content-disposition", "attachment;filename=" + filename);
    Response.BinaryWrite(bytes);
    Response.Flush();
    Response.End();
}
catch
{
}

问题

我从本地机器获取图像,并且在获取图像后必须启用一些按钮。这在本地机器上工作正常。但是在Web服务器中我能够获得图像但之后没有任何事情发生。按钮没有显示,并且在获取图像之前从下拉列表中选择的值也消失了。

在使用上述方法时,尝试了解本地服务器/ casini和IIS之间的区别?为什么在Web服务器中失败?

2 个答案:

答案 0 :(得分:1)

IIS正在其自己的凭据下运行。可能它无法访问您的c:\images文件夹。尝试授予该文件夹Everyone的读取权限。

答案 1 :(得分:0)

您可能需要为IIS用户的c:\ images文件夹授予“读取”权限。根据您的服务器操作系统,查找以下用户之一:

NETWORKSERVICE

IIS_IUSRS

正如托文所指出的,您当前的代码很脆弱。因此,只要您对可以查看TestPage.aspx的任何人都可以访问您图片文件夹中的所有文件感到满意,那么您就可以了。

相关问题