WebClient Загрузить файл на веб - PullRequest
0 голосов
/ 19 января 2010

Я хотел бы знать, правильно ли я его кодирую. Чтобы загрузить файл вручную на мой сервер на рабочем месте, я должен использовать логин и пароль. С ползунком ниже, я должен также включать мой логин и пароль?

    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 ]

1 голос
/ 19 января 2010

Вы никогда не должны включать информацию о пользователе / ​​пароле в файл кода. Причина, по которой это выбрасывает 401, заключается в том, что пользователь Интернета и пул приложений, в котором он работает, не имеют прав записи в каталог, в который вы пытаетесь записать.

Щелкните правой кнопкой мыши каталог и добавьте / ASPNET и / Network Service как пользователей с правами на запись. Это должно прояснить проблему. Убедитесь, что вы изолировали каталог.

Вот хорошая статья о MSDN: http://support.microsoft.com/kb/815153

0 голосов
/ 31 октября 2012

Возможно, очень поздно, но вы можете добавить эти 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;)");
...