ASP.NET MVC – Enrutamiento: una acción con extensión de archivo

¿Hay alguna manera de lograr la URL de llamada http://mywebsite/myarea/mycontroller/myaction.xml Esto básicamente sería “falso” al solicitar un archivo pero el resultado sería una operación de acción que serviría un archivo creado dinámicamente?

Intenté esto:

 context.MapRoute( "Xml_filename", "Xml/{controller}/{action}.xml" ); 

pero cada vez que hay una extensión de archivo en la URL, el enrutamiento falla y se comporta como estaba solicitando un archivo directamente.

Sospecho que esto podría deberse a usar extensión menos controlador de url.

    

Gracias por cualquier sugerencia.

Jakub

Debe asignar solicitudes para sus archivos XML a TransferRequestHandler en web.config. De lo contrario, IIS gestionará la solicitud.

Jon Galloway explica cómo hacer esto aquí .

En resumen, agrega este elemento a location / system.webServer / handlers en su web.config:

  

El problema es que IIS manejará el archivo .xml como un archivo estático y de manera predeterminada no enrutará el archivo XML a través de su aplicación MVC. IIS maneja la solicitud y su código MVC nunca obtiene un cambio para enrutar a este archivo. Hay algunas formas de evitar esto.

He encontrado la manera más fácil de manejar esto mediante el uso del módulo de reescritura de IIS para reescribir la URL de las URL de archivos estáticos a una ruta MVC:

           

Asegúrese de tener instalado el Módulo de reescritura de IIS (instalación separada del instalador de la plataforma). Si ya está utilizando el controlador Rewrite, esta es la solución más eficiente.

Como se señaló anteriormente en la publicación de Ben Foster y Jon Galloway, también puede asignar TransferRequestHandler a su ruta específica que desea enrutar. Para compacidad, esto es lo que necesita agregar a su web.config:

      

A continuación, puede usar una ruta de atributo para manejar las URL del archivo .xml. Por ejemplo:

 [Route("blog/wlwmanifest.xml")] public ActionResult LiveWriterManifest() {... } 

Más información en esta publicación de blog: http://weblog.west-wind.com/posts/2015/Nov/13/Serving-URLs-with-File-Extensions-in-an-ASPNET-MVC-Application

Si suelta su archivo xml en una de las carpetas dentro de su sitio web. Intente algo como esto: C # – Cómo hacer una llamada HTTP