每次我想将文件写入文件夹时,我都会遇到此错误。
这是我的代码:
protected void ListAttachments(List<MessagePart> msgParts)
{
bool attachmentsFound = false;
StringBuilder b = new StringBuilder();
b.Append("<ol>");
foreach (MessagePart p in msgParts)
{
string contentType = p.Headers["Content-Type"];
string contentDisposition = p.Headers["Content-Disposition"];
Match m;
if (contentDisposition != null)
{
m = FilenameRegex.Match(contentDisposition);
if (m.Success)
{
attachmentsFound = true;
b.Append("<li><a href='Handler.ashx?fileName=" + m.Groups["filename"].Value + "'>").Append(m.Groups["filename"].Value).Append("</a></li>");
Response.AppendHeader("content-disposition", "attachment; filename=" + m.Groups["filename"].Value);
Response.ContentType = "application/octet-stream";
//Error Occurs
Response.TransmitFile(Server.MapPath(@"~/Files"));
Response.End();
}
}
else if (contentType != null)
{
m = NameRegex.Match(contentType);
if (m.Success)
{
attachmentsFound = true;
b.Append("<li><a href='Handler.ashx?fileName="+m.Groups["filename"].Value+"'>").Append(m.Groups["filename"].Value).Append("</a></li>");
}
}
}
b.Append("</ol>");
if (attachmentsFound)
AttachmentsLiteral.Text = b.ToString();
else
AttachementsRow.Visible = false;
}
此处出现错误,如Access to the path 'F:\Gmail\Files' is denied
。
这是错误详情:
Server Error in '/Gmail' Application.
Access to the path 'F:\Gmail\Files' is denied.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.UnauthorizedAccessException: Access to the path 'F:\Gmail\Files' is denied.
ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate="true"/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.
To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.
Source Error:
Line 160: Response.AppendHeader("content-disposition", "attachment; filename=" + m.Groups["filename"].Value);
Line 161: Response.ContentType = "application/octet-stream";
Line 162: Response.TransmitFile(Server.MapPath(@"~/Files"));
Line 163: Response.End();
Line 164: }
Source File: f:\Gmail\DisplayPop3Email.aspx.cs Line: 162
Stack Trace:
[UnauthorizedAccessException: Access to the path 'F:\Gmail\Files' is denied.]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +7712175
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) +1162
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) +66
System.Web.HttpResponse.TransmitFile(String filename, Int64 offset, Int64 length) +134
System.Web.HttpResponse.TransmitFile(String filename) +12
DisplayPop3Email.ListAttachments(List`1 msgParts) in f:\Gmail\DisplayPop3Email.aspx.cs:162
DisplayPop3Email.Page_Load(Object sender, EventArgs e) in f:\Gmail\DisplayPop3Email.aspx.cs:90
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
请告诉我如何解决这个问题....
答案 0 :(得分:1)
自从我使用ASP.NET以来已经有一段时间了,但我会对这个答案有所了解。首先,错误非常明显 - 用户帐户可能是ASP.NET进程正在其上下文中的NETWORK服务帐户,无法访问目录 F:\ Gmail \ Files 。
请参考this link,它应该为您指明如何前进 - 而不是详细说明为确保ASP.NET进程可以写入/读取磁盘文件而不引起安全问题而采取的步骤
另请参阅以下链接,详细了解What is new in ASP.NET Data access(适用于ASP.NET 3.0的文章)和ASP.NET required Access Control Lists。
希望这为解决您当前面临的问题提供了一个步骤