【问题标题】:WebClient Upload file to webWebClient 上传文件到网络
【发布时间】:2011-01-06 15:33:54
【问题描述】:

我想知道我的编码是否正确。要将文件手动上传到我的工作场所服务器,我必须使用登录 ID 和密码。使用下面的代码,我应该包括我的登录 ID 和密码吗?

    public void SaveLogsToWeb(string logFileName)
    {
        WebClient webClient = new WebClient();
        string webAddress = null;
        try
        {
            webAddress = @"http://myCompany/ShareDoc/";

            webClient.Credentials = CredentialCache.DefaultCredentials;

            WebRequest serverRequest = WebRequest.Create(webAddress);
            WebResponse serverResponse;
            serverResponse = serverRequest.GetResponse();
            serverResponse.Close();

            webClient.UploadFile(webAddress + logFileName, "PUT", logFileName);
            webClient.Dispose();
            webClient = null;
        }
        catch (Exception error)
        {
            MessageBox.Show(error.Message);
        }
    }

当我运行它时,异常抛出“(401) Unauthorized”

谢谢。

【问题讨论】:

  • 这是网络应用还是控制台应用?

标签: c# upload webclient


【解决方案1】:

您不应该在代码文件中包含用户/密码信息。抛出 401 的原因是互联网用户和运行它的应用程序池对您尝试写入的目录没有写入权限。

右击目录,将/ASPNET和/Network Service添加为具有写权限的用户。这应该可以解决问题。确保隔离目录。

这里有一篇很好的 msdn 文章:http://support.microsoft.com/kb/815153

【讨论】:

  • 感谢您的信息。我回家后会读。再次感谢。
  • 按照提供的链接后,它只提到了 ASPNET,但我使用 C# 将文件上传到 web。这是我没有得到的部分。在它使用上面的代码之前,但是当我再次执行相同的程序时,它抱怨未经授权。
  • 是的,上面的代码 sn-p 有效,但是权限不是基于您上面的代码。它在 IIS/文件系统级别。 401 总是当 Web 服务器无权在本地文件系统上执行操作时。通常它涉及缺少“读取”访问权限,但在这种情况下,您正在尝试实际写入,因此服务器上的 Web 进程将需要新的写入权限。
  • 你知道我在哪里可以获得新的写入权限吗?与设置服务器的人交谈还是?
  • 是的,服务器管理员将是需要为您执行此操作的人。我的印象是您同时控制了代码和服务器。
【解决方案2】:

也许很晚,但是您可以在webClient.Upload.. 之前添加这两行来修复它:

webClient.Headers["Accept"] = "/";
webClient.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 2011-01-18
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    相关资源
    最近更新 更多