Tengo una aplicación ASP.NET core MVC y en la carpeta wwwroot, he agregado otra carpeta llamada "Shaun" y en esa carpeta he dejado caer un exe para probar y descargar:
Ahora, si navego a: http://localhost:PORT/Shaun/chromesetup.exe , aparece un error 404. Intenté agregar el controlador a continuación, pero esto no funciona.
<add name="Client exe" path="*.exe" verb="*" modules="StaticFileModule" resourceType="File" />Información adicional: la razón por la que necesito hacer esto es porque tengo una aplicación cliente que se conecta a este sitio web, esa aplicación cliente está empaquetada usando ClickOnce y se coloca en la wwwroot del sitio web, esto funcionó anteriormente usando MVC (pre Core) y todavía lo hace, pero no con el núcleo.
¿Cómo puedo solucionar esto?
Prueba lo siguiente y dime si funciona:
app.UseStaticFiles(new StaticFileOptions { ServeUnknownFileTypes = true, //allow unkown file types also to be served DefaultContentType = "Whatver you want eg: plain/text" //content type to returned if fileType is not known. } Puede mirar el código fuente de StaticFileMiddleware para ver cómo maneja los archivos estáticos.
De manera predeterminada FileExtensionContentTypeProvider se usa para verificar, en función de las extensiones de nombre de archivo, qué tipo de contenido debe devolverse en los encabezados de respuesta Http. exe no está en esta lista.
Entonces, otra opción sería agregar Exe a esta lista:
var provider = new FileExtensionContentTypeProvider(); provider.Mappings.Add(".exe", "application/vnd.microsoft.portable-executable"); //file ext, ContentType app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = provider });Para que se sirvan los archivos estáticos (el archivo .exe es un tipo de archivo estático), debe configurar el Middleware para agregar archivos estáticos a la canalización. El middleware de archivos estáticos se puede configurar agregando una dependencia en el paquete Microsoft.AspNetCore.StaticFiles a su proyecto y luego llamando al método de extensión UseStaticFiles desde Startup.Configure:
public void Configure(IApplicationBuilder app) { app.UseStaticFiles(); }