我有一臺服務器主機,只允許我通過ftp(在我的應用程序中有代碼)上傳文件。 所以我得到了一個代碼,可以讓我上傳文件到服務器,除了一件奇怪的事情,如果我/用戶登錄(身份驗證),我無法上傳文件。這是黑暗中的一個鏡頭,看看有人可能知道這是爲什麼。登錄時上傳文件時出錯
我的錯誤信息是這樣的
Access to the path 'D:\hshome\PATH' is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj) at System.IO.Directory.CreateDirectory(String path) at BasicProject.Mvc.Areas.Account.Controllers.ProfileController.Test(TestViewModel viewModel)
我的代碼使用上載該
foreach (string item in Request.Files)
{
HttpPostedFileBase file = Request.Files[item];
if (file != null)
{
var path = "File";
var filePath = System.Web.HttpContext.Current.Server.MapPath("~/" + path + "/");
if (!Directory.Exists(filePath))
Directory.CreateDirectory(filePath);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://SITE/SITE/" + path + "/" + file.FileName);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("USER", "PASSWORD");
request.UsePassive = false;
var sourceStream = new StreamReader(file.InputStream);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();
}
就像我說的這個作品,如果我不登錄,並在黑暗中了一槍,如果你有同樣的問題,我會更樂意得到一個解決方案。
我該怎麼做才能解決這個問題?我試圖模仿我的web.config,但我得到一個錯誤,說我不能在那裏。我應該怎樣Response.Write()? –
你可能不想冒充你,你可能希望該文件被編寫爲應用程序池用戶(這可能因您的託管服務提供商而異,但我一無所知,主要是因爲您沒有提及它)。您是否嘗試詢問主持人如果他們知道發生了什麼事情? – yakatz