Удаленный сервер возвратил ошибку: (405) Метод не разрешен - PullRequest
1 голос
/ 21 февраля 2012

Я хочу использовать HttpWebRequest для отправки файла на сервер:

private void testUpload()
{
    FileStream source = File.Open(@"C:\test.txt", FileMode.Open);

    var request = 
    (HttpWebRequest)WebRequest.Create(new Uri("http://example.com/Project/"));
    request.Method = "POST";

   request.BeginGetResponse(DataUploadCompleted, request);
}

private void DataUploadCompleted(IAsyncResult ar)
{
    var request = (HttpWebRequest)ar.AsyncState;
    var response = request.EndGetResponse(ar);
}

Я получил это исключение:

Удаленный сервер возвратил ошибку: (405) МетодНе разрешено.

Когда я получаю доступ: "http://example.com/Project/", на странице отображается:

Directory Listing Denied

This Virtual Directory does not allow contents to be listed.

Однако я уже выполнил команду chmod 777 для папки: projectи разрешить пользователю IIS загружать на него файлы (полное разрешение).

Почему я получил это исключение?

Я искал решение. Некоторые люди советуют использовать:

NetworkCredential myCred = new NetworkCredential("myusername", "mypassword");
request.Credentials = myCred;

Являются ли myusername и mypassword учетной записью FTP?

Если мне нужно использовать учетную запись FTP, мне это не нравится. Могу ли я использовать некоторые другие учетные данные, а не учетную запись FTP?Я не хочу предоставлять учетную запись ftp, и люди получат доступ на мой сервер.

Ответы [ 3 ]

1 голос
/ 21 марта 2012

Мне нужно добавить веб-страницу на сервере для обработки загрузки.

1 голос
/ 08 мая 2019

Иногда эта ошибка для конфигурации IIS на сервере, который вы хотите "GetResponse ();".

Для предотвращения атаки на сервер большим количеством запросов к Web Api, IIS проверяет user-agent, а при отсутствии user-agent Server возвращает ошибку 405.

Для передачи этой ошибки вы должны установить user-agent, например, user-agent браузера.

посмотрите этот код и используйте его в своем коде:

var request = (HttpWebRequest) WebRequest.Create(item.Url);

                request.Method = WebRequestMethods.Http.Get;
                request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; ; rv:1.8.0.7) Gecko/20060917 Firefox/1.9.0.1";
                request.AllowAutoRedirect = true;
                request.Timeout = 1000 * 300;
                request.KeepAlive = false;
                request.ReadWriteTimeout = 1000 * 300;
                request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
1 голос
/ 21 февраля 2012

перейдите в IIS, а затем откройте каталог и включите его, это должно работать

...