C# 尝试在网络上创建共享文件夹时文件访问被拒绝

C# 尝试在网络上创建共享文件夹时文件访问被拒绝,c#,C#,我试图在本地共享文件夹上创建一个文件,并将该文件的内容从我的c Webservice写入在共享本地文件夹上创建的文档,我被拒绝访问,服务器无法处理此请求。我一直在想,到底担心什么。我的代码是这样的 private void SaveFiletoLocalDisk() { string mypath = Server.MapPath("~/Files"); string filedocx = "ExpenseApprovalMemo2.docx"; string mymai

我试图在本地共享文件夹上创建一个文件,并将该文件的内容从我的c Webservice写入在共享本地文件夹上创建的文档,我被拒绝访问,服务器无法处理此请求。我一直在想,到底担心什么。我的代码是这样的

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,因为捕获和抛出的成本相对较高,它掩盖了错误的来源,并且不会阻止程序崩溃。这是一种反模式。我不知道你是从哪里想到这样写的。