Загрузка данных на самом деле не загружается и без ошибок в С#

У меня есть этот код, но я получаю ошибку, описанную в заголовке: «Удаленный сервер вернул ошибку: (405) Метод не разрешен».

** Я заменил PUT на POST**

Если я заменю «PUT» на «POST», кажется, что это сработает, поскольку я не получаю сообщения об ошибке, но не загружаю никаких файлов. Я пытаюсь загрузить файл в библиотеку документов в sharepoint (офис 365)

public static void UploadTest()
        {
            WebClient w = new WebClient();

            w.Credentials = new NetworkCredential("username", "password");
            var ua = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
            w.Headers["Accept"] = "/";
            w.Headers.Add(HttpRequestHeader.UserAgent, ua);
            byte[] bFile = System.IO.File.ReadAllBytes(@"C:\t.txt");
            string ulr = @"http://www.website.com/uploadfolder/";
            System.Uri oUri = new System.Uri(ulr);

            try
            {
                w.UploadData(oUri, "POST", bFile);
                w.UploadDataCompleted += new UploadDataCompletedEventHandler(oWebClient_UploadDataCompleted);
                Console.WriteLine("Uri:" + oUri);
            }

            catch (Exception ex)
            {
                throw ex; 
                          }

            finally
            {
                Console.ReadLine();
            }
        }

person Rob    schedule 02.10.2012    source источник
comment
PUT явно не правильный метод. В качестве первого предположения, даже не пытаясь заглянуть в Sharepoint, следует ли вместо этого использовать POST?   -  person Dan Puzey    schedule 02.10.2012
comment
@DanPuzey PUT явно не правильный метод - не знаю, почему вы здесь так непреклонны, PUT также можно использовать для создания ресурсов, а также для их изменения (по крайней мере, с точки зрения REST).   -  person James    schedule 02.10.2012
comment
Похоже, он прав, используя PUT, значит, это проблема с учетными данными. См. также: stackoverflow.com/questions/11658024/ и msmvps.com/blogs/sundar_narasiman/archive/2011/11/30/   -  person Willem    schedule 02.10.2012
comment
Это не проблема с учетными данными, спасибо. Загрузка работает, теперь пытаюсь исправить загрузку с теми же учетными данными (я администратор (полный доступ) в точке доступа)   -  person Rob    schedule 02.10.2012
comment
@James: ну, сообщение об ошибке «Метод не разрешен». По какой-то причине PUT не может вызвать клиент - это может быть связано с авторизацией, или может быть, что метод должен быть POST. Я же сказал, что это была первая догадка!   -  person Dan Puzey    schedule 02.10.2012
comment
@DanPuzey Я изменил его на POST, он не выдает ошибку. а файл не загружает?   -  person Rob    schedule 02.10.2012
comment
@DanPuzey Если это связано с авторизацией, я бы посчитал это плохим дизайном, поскольку на самом деле он должен возвращать 403. Я предположил POST, однако оказалось, что PUT - правильный глагол. @Robuust, вы получаете какое-либо конкретное сообщение вместе с 405?   -  person James    schedule 02.10.2012
comment
@James только тот, который я показывал раньше. Я заменил PUT на POST сейчас, он не дает ошибки, но и не загружает файл.   -  person Rob    schedule 02.10.2012
comment
@Robuust Я бы посоветовал запустить отладчик HTTP, например Fiddler, и посмотреть, что является частью вашего запроса, и какая информация отправляется обратно в качестве ответа. Может помочь вам отследить, где он падает.   -  person James    schedule 02.10.2012
comment
@James: я согласен RE: авторизация - вот почему я сначала подумал, что нужно изменить глагол! :)   -  person Dan Puzey    schedule 02.10.2012
comment
Хорошо, это может быть функция авторизации, но как я могу это обновить? Есть идеи?   -  person Rob    schedule 02.10.2012


Ответы (1)


Существует проблема с доступом с учетными данными и входом в систему. Кажется, что-то идет не так, когда я пытаюсь подключиться, так как я могу загрузить поврежденный файл, когда удаляю w.Credentials = new NetworkCredential(user,pass);

Сейчас я пробую совершенно новый способ, спасибо за ответ.

person Rob    schedule 03.10.2012