Acceda a una receta de red desde una aplicación ASP.NET. Funciona en Visual Studio pero no en IIS, ¿por qué?

StackOverflow https://stackoverflow.com/questions/5341771

  •  27-10-2019
  •  | 
  •  

Pregunta

Tengo una red compartida en la intranet que permite el acceso de escritura a todos (invitado)

Entonces, escribí un programa (módulo mojoportal, de todos modos, creo que es lo mismo) en C# que escribe algunos archivos en esa ruta, y en Visual Studio funciona muy bien.

Ahora, usar el mismo programa en IIS 7.5, no funciona, obtengo esta excepción:

System.net.WebException: se produjo una excepción durante una solicitud de Client Web. ---> System.io.ioException-Falla de inicio de sesión: nombre de usuario desconocido o contraseña mala.

Bueno ... Dado que el acceso en el SMB se otorga a todos, no entiendo por qué no funciona en IIS ...

El código es este:

WebClient wc = new WebClient();
wc.DownloadFile(urltodownload, smbshare);

¿Qué puede ser? Gracias

¿Fue útil?

Solución

Su servicio IIS no se otorga para acceder a los archivos compartidos por defecto. Puede intentar ejecutar su sitio con la identidad de la piscina de aplicaciones establecida en Sistema local, o controlar manualmente la identidad bajo la cual se ejecuta el código desde web.config:

<system.web>
  <identity impersonate="true" userName="user with correct rights or admin" password="password"/>
  ...

Otros consejos

¿Has intentado establecer las credenciales?

Creo que el grupo de todos todavía requiere una credencial válida de algún tipo, sin establecer las credenciales que eres anónimo ...

wc.Credentials = CredentialCache.DefaultCredentials;

Parece que no es un problema para acceder a la acción de SMB, es un problema para acceder al sitio web almacenado en urltodownload. Como dijo Richard, es posible que desee usar las credenciales predeterminadas, es decir, wc.UseDefaultCredentials = true; o algún conjunto específico de credenciales o configurar el sitio web en urltodownload para aceptar conexiones anónimas.

Consulte lo que puede causar WebException Para el DownloadFile método @ Msdn.

Necesita algún tipo de credenciales para usar una acción de ASP.NET. Puede configurar una suplantación en Web.Config o establecer WC.Credentials utilizando credenciales de red. En Web.Config, establecería el Follwoing en la sección System.Web:

<identity impersonate="true" userName="username_here" password="password_here" />

Para mi aplicación Visual Studio (WinForms), fue un acto simple de crear una clave de nombre fuerte (SNK) para que la aplicación use.

No estoy seguro de por qué.

Quizás crear un SNK en Visual Studio tiene una forma de establecer estas credenciales a las que los otros autores sobre mí se refieren.

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top