Prepare a binary output action for file output
[RoutePrefix("images")]
public class ImageController : Controller
{
// GET: ~/images/profile.png
// GET: ~/images/1873429732.jpg
[HttpGet]
[Route("{name}.{ext}")]
public ActionResult ReadImage(string name, string ext)
{
if (System.IO.File.Exists(Server.MapPath(string.Format("~/uploads/{0}.{1}", name, ext))))
{
byte[] data = System.IO.File.ReadAllBytes(Server.MapPath(string.Format("~/uploads/{0}.{1}", name, ext)));
string contentType = MimeMapping.GetMimeMapping(System.IO.Path.GetFileName(string.Format("{0}.{1}", name, ext)));
return File(data, contentType);
}
else
{
return new HttpStatusCodeResult(404);
}
}
}
Then try test it, but respone 404 not found.
Add runAllManagedModulesForAllRequests="true" on modules section.
<?xml version="1.0" encoding="utf-8"?> <configuration> ... <system.webServer> ... <modules runAllManagedModulesForAllRequests="true"> <remove name="ApplicationInsightsWebTracking"/> <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler"/> </modules> </system.webServer> ... </configuration>
Then try it again, image rendered success.