I have a ASP.NET core MVC application and in the wwwroot folder, I\'ve added another folder called \"Shaun\" and in that folder I\'ve dropped an exe to try and download:
Try the following and tell me if it works:
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.
}
You can look at the sourcecode of StaticFileMiddleware
to see how it handles static files.
On default the FileExtensionContentTypeProvider
is used to check based on filename extensions what ContentType needs to be return in the Http Response headers. exe
is not in this list.
So another option would be to add Exe to this list:
var provider = new FileExtensionContentTypeProvider();
provider.Mappings.Add(".exe", "application/vnd.microsoft.portable-executable"); //file ext, ContentType
app.UseStaticFiles(new StaticFileOptions
{
ContentTypeProvider = provider
});
In order for static files (.exe file is a static file type) to be served, you must configure the Middleware to add static files to the pipeline. The static file middleware can be configured by adding a dependency on the Microsoft.AspNetCore.StaticFiles package to your project and then calling the UseStaticFiles extension method from Startup.Configure:
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
}