Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

231
Visualizações
Subir un archivo al servidor WebDAV usando WebClient.UploadFile devuelve 401

Intento cargar archivos desde mi aplicación C# en un cliente de Windows a un servidor web Linux a través de WebDAV. Para lograr esto, estoy usando WebClient.UploadFile() . La carga siempre arroja una excepción:

El servidor remoto devolvió un error: (401) No autorizado

Probé dos métodos diferentes de autorización, ambos con el mismo resultado.

Autorización:

 // Method A myWebClient.Credentials = new NetworkCredential("user123", "pass123"); // Method B var bytes = Encoding.UTF8.GetBytes(String.Format("{0}:{1}", "user123", "pass123")); string auth = Convert.ToBase64String(bytes); // "Basic aW1hZ2VfdXBsb2FkOkozMkUzYnVGWlB1S0tkQ2tQRkpV" string authString = String.Format("Basic {0}", auth); myWebClient.Headers.Add("Authorization", authString);

Para asegurarme de que WebDAV funciona según lo previsto, conecté y cargué archivos usando WinSCP (GUI de Windows) y cadaver (terminal de Linux), ambos con éxito .


Código de carga del archivo:

 try { string address = "http://123.124.125.126/webdav/1"; string fileName = "F:\\articleimages\\isotope\\1\\1dmgo.jpg"; byte[] response = myWebClient.UploadFile(address, fileName); } catch (WebException wexc) { // wexc.Message == The remote server returned an error: (401) Unauthorized }

Preguntas

  • ¿Mi código es correcto hasta ahora?
  • ¿Qué autorización se espera que use? NetworkCredentials o Header ?

Dado que el concepto solo falla en mi aplicación C#, el problema debe estar ahí.

  • ¿Cómo solucionaría más problemas?

La respuesta real (detalles de la excepción)

 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>401 Unauthorized</title> </head><body> <h1>Unauthorized</h1> <p>This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (eg, bad password), or your browser doesn't understand how to supply the credentials required.</p> </body></html>
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

WebClient es un cliente HTTP, no un cliente WebDAV.

Si hace WebClient.UploadFile , de forma predeterminada utiliza la solicitud HTTP POST , no la solicitud WebDAV PUT .

La falla de autenticación puede ser solo un efecto secundario de eso. E incluso si no, y resuelves el problema de autenticación, probablemente no te ayudaría.

No sé si puede ayudar, pero intente usar una sobrecarga que tome el argumento del method y use "PUT" .


Otra opción, ya que WinSCP funciona para usted, es usar el ensamblado WinSCP .NET .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda