C# 尝试在网络上创建共享文件夹时文件访问被拒绝
我试图在本地共享文件夹上创建一个文件,并将该文件的内容从我的c Webservice写入在共享本地文件夹上创建的文档,我被拒绝访问,服务器无法处理此请求。我一直在想,到底担心什么。我的代码是这样的C# 尝试在网络上创建共享文件夹时文件访问被拒绝,c#,C#,我试图在本地共享文件夹上创建一个文件,并将该文件的内容从我的c Webservice写入在共享本地文件夹上创建的文档,我被拒绝访问,服务器无法处理此请求。我一直在想,到底担心什么。我的代码是这样的 private void SaveFiletoLocalDisk() { string mypath = Server.MapPath("~/Files"); string filedocx = "ExpenseApprovalMemo2.docx"; string mymai
private void SaveFiletoLocalDisk()
{
string mypath = Server.MapPath("~/Files");
string filedocx = "ExpenseApprovalMemo2.docx";
string mymainDocumentPath = Path.Combine(mypath, filedocx);
string dateToday = DateTime.Now.ToString("yyyyMMdd");
Random r = new Random();
string snum = Convert.ToString(r.Next(5, 200));
string originFile = mymainDocumentPath;
string destinationFile = @"\\**.**.**.**\EmemoFailover\";
string FileRef = dateToday + snum;
string finalOutputFile = Convert.ToString(FileRef) + ".docx";
try
{
FileStream SW1;
FileIOPermission myPerm = new FileIOPermission(FileIOPermissionAccess.AllAccess, destinationFile + finalOutputFile);
myPerm.Assert();
SW1 = File.Create(destinationFile + finalOutputFile);
}
catch(Exception ex)
{
throw ex;
}
}
我仍然得到了错误。我想知道为什么会这样
编辑
错误如下所示:
看起来您的web应用程序正在尝试写入UNC路径—很可能是在不同的服务器上 默认情况下,它将使用内置帐户运行。这些文档有更多信息-它们指的是IIS 7,但我相信它在更高版本中仍然有效: 尝试查找运行应用程序的应用程序池,并在“高级设置”中编辑应用程序标识。使用您自己的网络凭据将标识临时设置为“自定义”,然后查看它是否有效
如果这解决了您的问题,您应该创建一个新的网络帐户来运行该应用程序,只需对该应用程序所需的文件夹具有权限即可您可以尝试以管理员身份运行Visual Studio。如果是进程或exe,请尝试以管理员身份运行该进程或exe。否则你最好的办法就是模仿
否则,您可以尝试右键单击网络文件夹并选择属性。然后取消选中只读选项。单击“确定”后,它应该开始工作。您对目标有写权限吗?@Cid,是的,我有。当您手动导航到\\**.*.*.*.*.*.*.*时,是否需要输入登录名/密码?@Cid,否。它不,不显示特定行…如果您没有不必要地捕获并引发异常,它会。不要使用try/catch块,除非您要记录错误并向用户隐藏它,并允许程序继续。catchException ex{throw ex;}是毫无意义的,它浪费CPU,因为捕获和抛出的成本相对较高,它掩盖了错误的来源,并且不会阻止程序崩溃。这是一种反模式。我不知道你是从哪里想到这样写的。