WebClient将文件上传到Web

时间:2010-01-19 03:40:50

标签: c# upload webclient

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

    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”

感谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

可能很晚,但你可以在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;)");