2011-08-23 41 views
1

我有下面的代碼:無法加載文件中的MVC

var ordinaryPropertyValue = new Catalog.Core.Entities.OrdinaryPropertyValue(); 

Environment.CurrentDirectory = System.IO.Path.GetTempPath(); 

var fileFile = Request.Files["File" + prop.Id]; 

if (fileFile == null) continue; 

string pathFile = Environment.CurrentDirectory; 

fileFile.SaveAs(pathFile); 

ordinaryPropertyValue.Value = pathFile; 

instance.SetPropertyValue(prop.Id, ordinaryPropertyValue); 

但我不能加載我的文件「COS的下一個問題:

AccessException:對路徑的訪問'C:\ Users \ Michael \ AppData \ Local \ Temp'被拒絕。

回答

0

感謝您的幫助,但真正的原因並不是訪問問題,正如您所說的。 真正的原因是空的「價值。所以我重拍我的代碼,如:

var ordinaryPropertyValue = new Catalog.Core.Entities.OrdinaryPropertyValue(); 

var fileFile = Request.Files["File" + prop.Id]; 

if (fileFile == null) 
    continue; 

string pathFile = Server.MapPath("~/temp"); 

string filenameFile = Path.GetFileName(fileFile.FileName); 

if (!string.IsNullOrEmpty(filenameFile)) 
{ 
    fileFile.SaveAs(Path.Combine(pathFile, filenameFile)); 

    ordinaryPropertyValue.Value = Path.Combine(pathFile, filenameFile); 

    instance.SetPropertyValue(prop.Id, ordinaryPropertyValue); 
} 
0

這是一個安全異常,執行您的Web應用程序的用戶無權在目標路徑上寫入。

請注意,您正試圖將文件保存到沒有文件名的目錄路徑。

你的代碼是一個爛攤子,無論如何,我個人會分配/改變Environment.CurrentDirectory

+0

我明白,這是一個安全異常,所以,我該如何解決這個問題? – revolutionkpi

0

我假設你正在使用你的本地計算機上的IIS,在這種情況下,你可能需要授予寫權限此目錄轉換爲Web應用程序正在運行的帳戶(使用VS的內置服務器在您的帳戶下運行)。

如果您使用的是IIS 7 +它的「ApplicationPoolIdentity」,否則它是「網絡服務」

附:我也不建議更改環境設置。