使用 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# 发生未处理的访问异常的主要内容,如果未能解决你的问题,请参考以下文章
C# mvc 同样的程序包发布,iis多台webservice可以访问,一台webservice出现问题