【问题标题】:I cannot save a file in the root of the server我无法在服务器的根目录中保存文件
【发布时间】:2010-09-09 23:57:05
【问题描述】:

我正在使用 asp.net 3.5。我在服务器中序列化一个对象,我租了一个主机,我想用 XML 以动态的方式修改一些东西,

这是我的代码:

Stream writer = new FileStream(Environment.CurrentDirectory + @"\public_html\" + nombrearchivo.Text, FileMode.Create);

serializer.Serialize(writer, p);

这是我的错误信息:

异常详情: System.UnauthorizedAccessException: 访问路径 'C:\Windows\SysWOW64\inetsrv\dasd.xml' 被拒绝。

谢谢!!

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    答案在错误信息中:“访问被拒绝”

    您没有对该文件夹的写入权限,这很有意义;你不应该拥有对该文件夹的写权限,至少你可能不应该。

    如果您需要缓存某些内容以供以后使用,请使用 session 进行临时存储,或者与您的托管公司讨论获得长期存储的写入权限。

    【讨论】:

    • 但他没有写入那个文件夹(至少考虑到他给我们的代码)。
    • @Kirk Woll serializer.Serialize(writer, p); ?
    • 但是该作者的路径包含“\public_html\”,不是吗?并且异常中的错误不包括该文件夹。
    【解决方案2】:

    Environment.CurrentDirectory 是每个进程的属性,很可能不是您想要的目录;在这种情况下,它是启动 IIS 工作进程的目录。

    在任何情况下,对于典型的 ASP.Net 托管(与物理或虚拟服务器托管相反),您将受到代码访问安全策略以及 IIS 工作进程所运行的 IUSR 帐户的权限的限制;通常这意味着极低的权限,以试图限制受损或恶意网页脚本的破坏,通常远低于您的应用程序上传登录的权限。

    简而言之,如果您想保存文件,您将需要安排一个应用程序可写目录(并且还可能大于中等 ASP.Net 信任)。

    【讨论】:

      【解决方案3】:

      我发现问题出在路径上……

      "\hmfsw\web\DTCWIN107\MYSITE.com\public_html\"

      工作得很好!在询问了托管服务提供商 8 次后,他们可以告诉我正确的那个

      非常感谢!!

      【讨论】:

        猜你喜欢
        • 2016-01-22
        • 1970-01-01
        • 2014-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-14
        相关资源
        最近更新 更多