繁体   English   中英

File.exists()在localhost中工作,但在IIS 7.5中不工作

[英]File.exists() working in localhost but not in IIS 7.5

我在c#(asp.net)中有一个代码,其中当我在IIS 7.5中执行File.exists()时,它返回一个假值,而当我通过Visual Studio调试在本地主机中运行它时,则返回一个真值。

我已经检查了所有读写权限,并且所有IIS用户都具有该文件夹的所有权限。

谁能建议解决此问题的任何方法?

随附的代码可供参考:-

protected void downloadFiles(string nric)
{
    string serverPath = Server.MapPath(@"~\Temp\");
    string folderName = nric;
    string dirName = serverPath + folderName;
    string logFilePath = Server.MapPath(@"~\Temp\");
    string logFile = logFilePath + "log2.txt";
    FileStream fs = new FileStream(logFile, FileMode.Create, FileAccess.ReadWrite);
    StreamWriter logWriter = new StreamWriter(fs);//File.CreateText(logFile);
    logWriter.WriteLine("Preparing to export  ....." + DateTime.Now.ToString());
    try
    {
        logWriter.WriteLine("entered try loop");
        Directory.CreateDirectory(dirName + "\\CollectionsItems");
        DataTable dt = new DataTable();
        dh.Fill("ACP", dt, "P_ACP_COLLECTION_VIEW_SEARCH_OWN", nric, "", "", "");
        foreach (DataRow dRow in dt.Rows)
        {
            logWriter.WriteLine("entered for loop");
            string fileURL = dRow["FILE_URL"].ToString();
            logWriter.WriteLine("file URL =" + fileURL);
            string collectionFolder = dRow["COLLECTION_FOLDER"].ToString();
            string collectionFile = Path.Combine(ConfigurationManager.AppSettings.Get("root") + "\\" + nric + "\\" + collectionFolder, fileURL);
            //string orgFile = collectionFile.Replace("\\", "/");
            string orgFile = collectionFile;
            string filName = dirName + "\\CollectionsItems\\" + fileURL;
            logWriter.WriteLine("org file =" + orgFile);
            logWriter.WriteLine("file name =" + filName);
            //WebClient wc = new WebClient();

            //wc.DownloadFile(new Uri(orgFile), filName);
            if (File.Exists(orgFile))
            {
                logWriter.WriteLine("entered if loop");
                FileStream readStream = new FileStream(orgFile, FileMode.Open, FileAccess.ReadWrite);
                FileStream writeStream = new FileStream(filName, FileMode.Create, FileAccess.Write);
                ReadWriteStream(readStream, writeStream);
                //File.Copy(orgFile,filName,true);
            }
        }

        logWriter.WriteLine(" ");
        logWriter.WriteLine("Exporting Completed  ....." + DateTime.Now.ToString());
        logWriter.Flush();
        logWriter.Close();
    }
    catch (Exception ex)
    {
    }
}

以下是在本地主机和IIS中生成的日志文件。

本地主机:-准备导出..... 4/30/2013 5:03:46 PM输入尝试为循环文件URL输入的循环= CO201304262025117117.jpg org文件= C:\\ inetpub \\ wwwroot \\ imprints3 \\ Temp \\ demostu01 \\如果输入了循环文件URL的循环= CO201304231616496601.jpg组织文件= C:\\ inetpub \\ wwwroot \\ imrootpub \\ wwwroot \\ Cyber​​sphere_imprints \\ Temp \\ demostu01 \\ CollectionsItems \\ CO201304262025117208.jpg Temp \\ demostu01 \\ Achievements \\ CO201304231616496601.jpg文件名= C:\\ inetpub \\ wwwroot \\ Cyber​​sphere_imprints \\ Temp \\ demostu01 \\ CollectionsItems \\ CO201304231616496601.jpg如果为循环文件URL = CO201303281418567609.docx org文件输入了循环,则输入了wwwroot \\ imprints3 \\ Temp \\ demostu01 \\ Achievements \\ CO201303281418567609.docx文件名= C:\\ inetpub \\ wwwroot \\ Cyber​​sphere_imprints \\ Temp \\ demostu01 \\ CollectionsItems \\ CO201303281418567609.docx

导出完成..... 4/30/2013 5:03:46 PM

IIS:-准备导出..... 4/30/2013 5:05:57 PM输入尝试为循环文件URL输入的循环= CO201304262025117117.jpg组织结构文件= C:\\ inetpub \\ wwwroot \\ imprints3 \\ Temp \\ demostu01 \\为循环文件URL输入的Achievements \\ CO201304262025117208.jpg文件名= C:\\ inetpub \\ wwwroot \\ imprints3 \\ Temp \\ demostu01 \\ CollectionsItems \\ CO201304262025117208.jpg org文件= C:\\ inetpub \\ wwwroot \\ imprints3 \\ Temp \\ demostu01 \\ Achievements \\ CO201304231616496601.jpg文件名= C:\\ inetpub \\ wwwroot \\ imprints3 \\ Temp \\ demostu01 \\ CollectionsItems \\ CO201304231616496601.jpg为循环文件URL输入= CO201303281418567609.docx org文件= C:\\ inetpub \\ wwwroot \\ imprints3 \\ Temp \\ demostu01 \\ Achievements \\ CO201303281418567609.docx文件名= C:\\ inetpub \\ wwwroot \\ imprints3 \\ Temp \\ demostu01 \\ CollectionsItems \\ CO201303281418567609.docx

导出完成..... 4/30/2013 5:05:57 PM

可以看出,日志文件的区别在于它们没有进入if循环,因为文件存在,这很奇怪,并且相同的函数正在localhost中进入if循环。

您可以尝试使用Server.MapPath

if (File.Exists(Server.MapPath(orgFile))

在此处查看与路径相关的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM