【问题标题】:Problem writing to a file from webserver从网络服务器写入文件时出现问题
【发布时间】:2009-02-04 16:48:01
【问题描述】:

我正在处理的项目的一个要求是根据特定标准将文件导出到网络共享。当我在 Visual Studio 中运行代码时,它工作得很好,但是当我部署它时,将启动保存文件的操作以失败告终。用户看到警报:

Could not find file '<full filename...>'.

在 web.config 中,我将 impersonate 设置为 true,并且用户有权写入相关网络共享。

这是写入文件的代码:

using (System.IO.FileStream fs = new System.IO.FileStream(fullpath, System.IO.FileMode.Create))
{
    using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fs))
    {
        sw.WriteLine(RouteMeter.HeaderString);
        foreach (RouteMeter meter in rm)
        {
            sw.WriteLine(meter);
        }
    }
}

【问题讨论】:

    标签: c# asp.net file


    【解决方案1】:

    有许多变量可能导致用户模拟失败,在这种情况下,IIS 会尝试以匿名用户身份执行操作。在尝试写入文件之前,您是否正在验证用户是否经过了正确的身份验证?

    如果启用了模拟 ASP.NET 应用程序,那个应用程序 在身份的上下文中运行 其访问令牌 IIS 传递给 ASP.NET。该令牌可以是 经过身份验证的用户令牌,例如 登录 Windows 用户的令牌, 或 IIS 为匿名用户提供的令牌(通常是 IUSR_MACHINENAME 身份)。

    http://msdn.microsoft.com/en-us/library/xh507fc5.aspx

    【讨论】:

      【解决方案2】:

      我怀疑这里更好的方法是将应用程序池的身份设置为具有访问权限(无模拟)。此外,请确保您使用的是 UNC 路径 - 而不是网络共享名称(“\\foo\bar”,而不是“f:”等)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-08
        • 1970-01-01
        • 2019-02-20
        • 1970-01-01
        • 1970-01-01
        • 2015-07-26
        • 2017-08-30
        • 1970-01-01
        相关资源
        最近更新 更多