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

Posted

技术标签:

【中文标题】使用 MVC IIS 8 错误插入文件夹 C# 发生未处理的访问异常【英文标题】:Insert Folder C# with MVC IIS 8 Error An unhandled access exception has occurred 【发布时间】:2021-07-11 01:23:15 【问题描述】:

我在 Windows 10 Pro VS 2019 上进行本地调试。 这将在我的本地计算机上运行良好,但不能在 Web 服务器上运行 我的服务器是带有 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);
        

这是我的错误:

ASP.NET 网页输出:对路径“\\kalbox\Video\1231”的访问被拒绝

应用程序事件日志:

事件代码:4011 事件消息:发生未处理的访问异常。 活动时间:4/15/2021 4:41:57 PM 活动时间(UTC):4/15/2021 9:41:57 AM 事件 ID:0c49e37dc23b486b8537561bbc024a5b 事件顺序:7 事件发生:1 事件详细代码:0 应用信息: 应用域:/LM/W3SVC/1/ROOT/Video_OPL-66-132629533163447222 信任级别:完全 应用程序虚拟路径:/Video_OPL 申请路径:D:\Video_Training\ 机器名称:SERVERNAME 处理信息: 进程 ID:12844 进程名称:w3wp.exe 帐户名称:NT AUTHORITY\NETWORK SERVICE 索取资料: 请求网址:http:******** 请求路径:/Video_OPL/Home/AddFolder 用户主机地址:****** 用户:域\Agus.Suhardi 已通过身份验证:真 身份验证类型:协商 线程帐户名称:NT AUTHORITY\NETWORK SERVICE F12 控制台浏览器谷歌浏览器:加载资源失败:服务器响应状态为 500(内部服务器错误)

我已经找到了我的 Windows 身份验证,并且消息框显示了我的名字(domainAgus.Suhardi,没有像 domain\Agus.Suhardi 这样的斜线)

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

这是我的许可 Kalbox 文件夹

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

NT AUTHORITY\网络服务

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

【参考方案2】:

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

btw tq Samwu 回答你,你是对的,我的帐户 IIS 没有写入权限

【讨论】:

以上是关于使用 MVC IIS 8 错误插入文件夹 C# 发生未处理的访问异常的主要内容,如果未能解决你的问题,请参考以下文章

IIS Express 8 - 无法写入配置文件

C# mvc 同样的程序包发布,iis多台webservice可以访问,一台webservice出现问题

ASP.NET MVC 6 使用 IIS 开发无需发布

IIS Express 8 - 无法写入配置文件

ASP.NET MVC 4 应用程序是不是必须位于 IIS 8 上站点的根文件夹中?

HTTP 错误 403.14 - 禁止 asp.net 5 和 MVC 6 iis10