无法在共享主机(hostgator)中读/写文件

时间:2016-11-08 08:13:19

标签: c# asp.net-mvc security hosting shared-hosting

我已经开发了MVC 5项目,它可以在本地文件服务器和其他托管上工作,例如(dhosting,Go daddy)但是当我将它上传到共享主机(hostgator)时,它会抛出一个安全例外,即。

异常详细信息: System.Security.SecurityException:请求类型为' System.Security.Permissions.FileIOPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken的权限= b77a5c561934e089'失败。

当我添加<meta http-equiv="Cache-Control" content="no-cache, must-revalidate"> 时,错误更改为配置错误,即

描述:处理为此请求提供服务所需的配置文件时发生错误。请查看下面的具体错误详细信息并相应地修改配置文件。

分析程序错误消息:此配置部分不能在此路径中使用。当站点管理员使用继承的配置文件锁定对此节的访问权时,会发生这种情况。

源错误:服务器上发生应用程序错误。此应用程序的当前自定义错误设置可防止远程查看应用程序错误的详细信息(出于安全原因)。但是,它可以在本地服务器计算机上运行的浏览器中查看。

有什么方法可以解决这个问题,还是应该与托管服务提供商联系以提供完全信任?

3 个答案:

答案 0 :(得分:1)

您看到的行为是预期的 - 大多数(如果不是全部)共享托管服务提供商将不允许完全信任站点部分由于能够写入磁盘。

您的选择:

  • 停止使用光盘并将数据存储到数据库(如果能够在服务器之间进行实际迁移,则可以获得额外的好处,备份...)
  • 专用服务器托管(虚拟服务器,Azure / Amazon / Google云中的虚拟机......) - 成本将远高于中等信任共享托管
  • 找到一些允许完全信任的共享主机(也可能意味着对可用性/性能的零保证)

答案 1 :(得分:0)

诀窍是在内存中工作,在我的情况下,我正在使用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();

答案 2 :(得分:0)

我和Hostgator有同样的问题。 Windows共享主机方案。

  • 您只是因为无法修改web.config文件中的信任级别而得到分析器错误消息。 (这就是它改变配置错误的原因)
  • Hostgator Plesk中的CAS信任级别设置仅为安慰剂。
  • 解决方案:您应该将该文件夹的权限更改为您要写入的完全控制权。 (你可以在Plesk做到这一点。)

然后你可以去:

File.Create(@"D:\InetPub\vhosts\<yourdomain>\httpdocs\App_Data\file.txt");

我知道你问这个问题已经过去了一年。从那时起你是否设法创建文件?

相关问题