使用 MVC IIS 8 错误插入文件夹 C# 发生未处理的访问异常

Insert Folder C# with MVC IIS 8 Error An unhandled access exception has occurred

我在 Windows 10 Pro、VS 2019 上进行本地调试。 这将 运行 在我的本地机器上很好,但在网络服务器上却不行 我的服务器是带有 IIS 8 的 Windows Server 2012 R2。 有人知道问题出在哪里吗?

这是我的代码:

查看

$.ajax({
                        url: 'AddFolder',
                        type: 'post',
                        data: JSON.stringify(dto),
                        dataType: 'json',
                        contentType: 'application/json;charset=utf-8',
                        success: function (data) {
                            alert("Insert Folder Success");
                            $('#foldername').val("");
                        },
                        error: function (ex) {
                            alert(JSON.stringify(ex));
                        }
                    });

控制器

 public ActionResult AddFolder(videopath model)
        {
            string conSQL = mySetting.ConnectionString;
            SqlDataAdapter dataAdapt = new SqlDataAdapter();
            SqlConnection conn = new SqlConnection(conSQL);
            List<string> ModelData = new List<string>();
            string result;

            try
            {

                string path1 =@"\kalbox\Video\";
                string path2 = Path.Combine(path1, model.FolderName);
                if (!Directory.Exists(path2))
                {
                    Directory.CreateDirectory(path2);
                    using (SqlCommand command = new SqlCommand("InsertFolderPath", conn))
                    {
                        conn.Open();
                        command.CommandType = CommandType.StoredProcedure;

                        command.Parameters.Add("@FolderName", System.Data.SqlDbType.VarChar);
                        command.Parameters["@FolderName"].Value = model.FolderName;
                        command.Parameters.Add("@FolderPath", System.Data.SqlDbType.VarChar);
                        command.Parameters["@FolderPath"].Value = path2;


                        result = (string)command.ExecuteScalar();
                        ModelData.Add(result);
                        conn.Close();

                    }
                }
                else
                {
                    Console.WriteLine("Folder Exists");
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
            return Json(ModelData, JsonRequestBehavior.AllowGet);
        }

这是我的错误:

    Event code: 4011 
    Event message: An unhandled access exception has occurred. 
    Event time: 4/15/2021 4:41:57 PM 
    Event time (UTC): 4/15/2021 9:41:57 AM 
    Event ID: 0c49e37dc23b486b8537561bbc024a5b 
    Event sequence: 7 
    Event occurrence: 1 
    Event detail code: 0 
     
    Application information: 
        Application domain: /LM/W3SVC/1/ROOT/Video_OPL-66-132629533163447222 
        Trust level: Full 
        Application Virtual Path: /Video_OPL 
        Application Path: D:\Video_Training\ 
        Machine name: SERVERNAME
     
    Process information: 
        Process ID: 12844 
        Process name: w3wp.exe 
        Account name: NT AUTHORITY\NETWORK SERVICE 
     
    Request information: 
        Request URL: http:********
        Request path: /Video_OPL/Home/AddFolder 
        User host address: ****** 
        User: domain\Agus.Suhardi 
        Is authenticated: True 
        Authentication Type: Negotiate 
        Thread account name: NT AUTHORITY\NETWORK SERVICE 

我已经找到我的 Windows 身份验证,消息框显示我的名字(domainAgus.Suhardi,没有像 [=56 这样的斜杠=].苏哈迪 )

var winlogon = '@HttpContext.Current.User.Identity.Name';
alert (winlogon);

这是我的许可 Kalbox 文件夹

FYI 文件夹 kalbox 仅添加用户 AD (Active Directory) 我的 IIS 用户名是

NT AUTHORITY\NETWORK 服务

此错误可能是由于您的 asp.net 帐户 {MACHINE}\ASPNET 没有对路径“\kalbox\Video31”的写入权限造成的。

您可以尝试以下步骤来解决这个问题:

右键单击文件夹属性 > 安全选项卡 > 编辑 > 添加 > 位置 > 选择您的本地计算机 > 单击确定 > 在“输入对象名称 select”下方键入 ASPNET > 单击检查名称选中复选框以获得所需的访问权限(完全控制)。如果它对您不起作用,请对网络服务执行相同的操作。

现在这应该显示您的本地 {MACHINENAME}\ASPNET 帐户,然后您设置对此帐户的写入权限。

否则,如果应用程序通过 模拟,身份将是匿名用户(通常 IUSR_MACHINENAME)或经过身份验证的请求用户。

我的案子已经解决了 您可以尝试添加用户 Everyone 并授予完全控制权

顺便说一句,请 Samwu 回答你,你是对的,我的帐户 IIS 没有写入权限