无法读取/写入共享主机(hostgator)中的文件
本文关键字:hostgator 文件 主机 共享 读取 | 更新日期: 2023-09-27 18:16:50
我已经开发了MVC 5项目,它在本地文件服务器和其他主机(dhosting, Go daddy)上运行良好,但当我将其上传到共享主机(hostgator)时,它会抛出一个安全异常,即
异常详细信息: System.Security.SecurityException:请求类型为'System.Security.Permissions '的权限。FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
当我添加<trust level="Full" />
时,错误更改为配置错误即
描述:处理处理此请求所需的配置文件时发生错误。请查看下面的具体错误细节,并适当修改您的配置文件。
解析器错误消息:这个配置部分不能在这个路径上使用。当站点管理员使用继承的配置文件锁定了对该部分的访问权限时,就会发生这种情况。
Source Error:服务器上出现应用程序错误。此应用程序的当前自定义错误设置防止远程查看应用程序错误的详细信息(出于安全原因)。但是,它可以被运行在本地服务器机器上的浏览器查看。
是否有办法解决这个问题,或者我应该与主机提供商交谈以提供完全信任?
您看到的行为是预期的-大多数(如果不是全部)共享主机提供商将不允许完全信任的站点,部分原因是写入磁盘的能力。
你的选择:
- 停止使用磁盘并将数据存储到DB(如果能够在服务器之间实际迁移,备份…)
- 专用服务器托管(虚拟服务器,Azure/Amazon/Google云中的虚拟机,…)-成本将显著高于中等信任共享托管
- 找到一些允许完全信任的共享主机(也可能意味着对可用性/性能的零保证)
技巧是在内存中工作,在我的情况下,我正在使用EPPlus库创建一个Excel文件
var stream = new MemoryStream(package.GetAsByteArray());
Response.AppendHeader("content-disposition", "attachment; filename=MyFile.xlsx");
Response.ContentType = "application/octet-stream";
Response.BinaryWrite(stream.ToArray());
Response.End();
我在Hostgator上遇到了同样的问题。Windows共享主机计划
- 你得到解析器错误消息仅仅是因为你不能修改你的web中的信任级别。配置文件。(这就是为什么它更改为配置错误)
- Hostgator Plesk中的CAS信任级别设置仅为安慰剂。
- 解决方案:您应该将该文件夹的权限更改为要写入的完全控制。(你可以在Plesk中这样做)。
那么你可以去:
File.Create(@"D:'InetPub'vhosts'<yourdomain>'httpdocs'App_Data'file.txt");
我知道你问这个问题已经一年了。从那以后你有创建文件吗?