2011-12-07 40 views
2

我在下面的代码VSTO插件我写了展望:保存电子邮件附件的UNC路径

 savefolder = Regex.Replace(Guid.NewGuid().ToString(), @"[- ]", String.Empty); 

     savepathfull = string.Format(@"{0}{1}", netloc, savefolder); 
     DirectoryInfo di = new DirectoryInfo(@savepathfull); 
     if (!(di.Exists)) 
      Directory.CreateDirectory(@savepathfull); 



     removedFiles = new List<string>(); 

     for (int d = attachs.Count; d > 0; d--) 
     { 
      if (attachs[d].Size > smallAttachment) 
      { 
       removedFiles.Add(attachs[d].FileName); 
       attachs[d].SaveAsFile(savepathfull); 
      } 
     } 

一切工作正常,直到我试图将附件保存在哪一点我收到一个UnauthorizedAccessException。我知道我的测试用户对文件夹拥有完全的权利,但我仍然收到此错误。

想法?

谢谢。

+0

哪行引发异常?你还可以发布异常消息和堆栈跟踪吗? –

+0

我也会尝试删除那里的目录,看看Directory.CreateDirectory中是否有错误将{if}语句包装好,以便您可能需要做其他事情,最好将它包装在Try catch中,不要假设该代码将不会错误..如果它返回一个错误,那么它可能是一个权限/权限问题,你有权访问网络共享或文件夹..? – MethodMan

+1

我很困惑你的实现。 'savepathfull'是一个文件还是一个目录?您似乎将它用作_('Directory.CreateDirectory(@savepathfull);'和'attachs [d] .SaveAsFile(savepathfull);')_。 – SliverNinja

回答

6

当您拨打Attachment.SaveAsFile时,您需要提供一个有效的文件名。您正尝试保存到目录,而不是文件。有关reference code,请参阅MSDN。

attachs[d].SaveAsFile(Path.Combine(savepathfull, attachs[d].DisplayName); 
+0

+1斑点 –

+0

同意@AdamRalph。 IDE仅将(字符串路径)指定为变量。我想我应该先查看MSDN。 –