如何解决使用 MVC IIS 8 错误插入文件夹 C# 发生未处理的访问异常
我在 Windows 10 专业版和 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”
-
应用程序事件日志:
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
- F12 控制台浏览器 Google Chrome:加载资源失败:服务器响应状态为 500(内部服务器错误)
我已经找到了我的 Windows 身份验证,并且消息框显示了我的名字(domainAgus.Suhardi,没有像 domain\Agus.Suhardi 那样的斜线)
var winlogon = '@HttpContext.Current.User.Identity.Name';
alert (winlogon);
这是我的许可 Kalbox 文件夹
仅供参考文件夹 kalbox 仅添加用户 AD (Active Directory) 我的 IIS 用户名是
解决方法
此错误可能是由于您的 asp.net 帐户 {MACHINE}\ASPNET 没有对路径“\kalbox\Video\1231”的写入权限。
您可以尝试以下步骤来解决此问题:
右键单击文件夹“属性”>“安全”选项卡>“编辑”>“添加”>“位置”>“选择本地计算机”>“确定”>在“输入要选择的对象名称”下方键入 ASPNET > 单击“检查名称”选中所需访问权限的框(完整控制)。如果它对您不起作用,请使用网络服务。
现在这应该显示您的本地 {MACHINENAME}\ASPNET 帐户,然后您为此帐户设置写入权限。
否则,如果应用程序通过 模拟,则身份将是匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。
,我已经解决了我的案子 您可以尝试添加用户所有人并给予完全控制
顺便说一句 tq Samwu 为您解答,您是对的,我的帐户 IIS 没有写入权限
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。