を拒否された私は、例外がスローされたWeb APIを使用してzipファイルを保存しようとしています:でアクセス 'C: WINDOWS system32に inetsrvに dotnetzip-uxoebj5p.tmpが'
Access to the path 'c:\windows\system32\inetsrv\DotNetZip-uxoebj5p.tmp' is
denied. at System.IO.__Error.WinIOError(Int32 errorCode, String
maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access,
Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize,
FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean
bFromProxy, Boolean useLongPath, Boolean checkHost)
System.IO.FileStream..ctor(String path、FileMode mode、FileAccess access、 FileShare共有、Int32 bufferSize、FileOptionsオプション、String msgPath、 System.IO.FileStream..ctor(ファイルパスモード、ファイルモード)のbFromProxyブール値 at Ionic.Zip.SharedUtilities.CreateAndOpenUniqueTempFile(String dir、Stream & fs、String & filename)Archnies.Archnies.DownloadFile(文字列のURL)
コードでIonic.Zip.ZipFile.SaveでIonic.Zip.ZipFile.get_WriteStreamで() () :
Logger.LogMessage("Downloading File From URL " + url);
// Construct HTTP request to get the file
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.CookieContainer = new System.Net.CookieContainer();
for (int i = 0; i <= driver.Manage().Cookies.AllCookies.Count - 1; i++)
{
System.Net.Cookie ck = new System.Net.Cookie(driver.Manage().Cookies.AllCookies[i].Name, driver.Manage().Cookies.AllCookies[i].Value, driver.Manage().Cookies.AllCookies[i].Path, driver.Manage().Cookies.AllCookies[i].Domain);
httpRequest.CookieContainer.Add(ck);
}
String userAgent = (String)((IJavaScriptExecutor)driver).ExecuteScript("return navigator.userAgent;");
httpRequest.Accept = "text/html, application/xhtml+xml, */*";
httpRequest.UserAgent = userAgent;// "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
//HttpStatusCode responseStatus;
// Get back the HTTP response for web server
HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();
Stream httpResponseStream = httpResponse.GetResponseStream();
// Define buffer and buffer size
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int bytesRead = 0;
// Read from response and write to file
string userProfile = Configurations.AppDataPath; //Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
byte[] b = null;
using (MemoryStream ms = new MemoryStream())
{
int count = 0;
do
{
byte[] buf = new byte[1024];
//count = stream.Read(buf, 0, 1024);
count = httpResponseStream.Read(buf, 0, 1024);
ms.Write(buf, 0, count);
} while (httpResponseStream.CanRead && count > 0);//while (stream.CanRead && count > 0);
b = ms.ToArray();
}
string fileName = Path.Combine(userProfile, String.Format("archaniesReport{0}.zip", new Random().Next(512365412)));
Logger.LogMessage("File: " + fileName);
ZipFile zip = new ZipFile();
zip.AddEntry(fileName, b);
zip.Save(Path.GetFileName(fileName));
zip.Dispose();
using (FileStream fileStream = File.Create(fileName))
{
while ((bytesRead = httpResponseStream.Read(buffer, 0, bufferSize)) != 0)
{
fileStream.Write(buffer, 0, bytesRead);
}
}
File.Copy(Path.GetFileName(fileName), fileName, true);
return true;
は私も
を試してみましたzip.TempFileFolder = Configurations.AppDataPath;
しかし、それは問題を解決していないようです。
親切に、あなたがPath.GetTempPath()
(MSDN)を使用して取得され、一時的な場所にファイルをダウンロードすることができ、私は
ファイルまたはフォルダにアクセス許可があるかどうかを確認します。 – summerGhost
私は 'c:\ windows \ system32 \ inetsrv'にアクセス権を与えることはできません。C:\\ Windowsの下でフォルダのアクセス権を与えることを許可していません。 –
十分な権限がある場所の外にファイルを移動する必要があります。 – summerGhost