Permitir requests con html sin desproteger tu C# web api

Una solucion que no he encontrado por ahí para mi problema es HttpContext.Current.Request.Unvalidated[“nombre”]

Os comento:
Resuta que estoy enviando un formulario con React que integra el editor react-draft-wysiwyg y estoy usando fetch API con formData porque el formularia envia también ficheros adjuntos.
El servidor es una API hecha con C# con el framework 4.5

Todo muy bien, pero cuando a la webapi le llega el html del campo en este caso “description”, nos peta con el típico error:
A potentially dangerous Request.Form value was detected from the client.
Eso está bien, porque significa que nuestro framework nos previene de ataques XSS (Cross Site Scripting)

Seguir leyendo

Combinar JSs y CSSs en .Net con HttpCombiner

Si estamos buscando algunas técnicas WPO (Web Performace Optimization) para nuestra página web en .Net, tenemos que tener en cuenta la reducción de tiempo de carga que nos ofrece juntar todos los archivos javascript y css en uno solo.

Al realizar una sola llamada al servidor para cada tipo de archivos envés de las N que se puedan estar haciendo, podemos reducir bastante el rendimiento al disminuir el tiempo de carga de la página.

Si esto no lo hacemos manualmente y ademas lo enviamos al servidor con compresión gzip, mejor que mejor.

Para ello, podemos implementar esta sencilla solución que encontrareis en los siguientes enlaces:

Artículo de la msdn.

Artículo de Codeproject.

Hay que tener en cuenta, que si se tenían las css’s en una carpeta y las rutas a las imágenes son relativas, al hacer esto no las cogerá, por lo que tendréis que reemplazar dicha ruta relativa como si la css estuviese en el raíz de la aplicación.

Capturar todos los errores en una aplicación ASP .Net

La verdad es que algo muy sencillo de hacer y que deberíamos hacer como norma en todas nuestras aplicaciones.

Simplemente tenemos que implementar el método “Application_Error” del “Global.asax.cs” y podremos capturar cualquier error que se produzca en la aplicación aunque no hayamos controlado la Excepción con un Try-Catch.

Una vez capturado el error, podemos mostrarlo en nuestro Log (es aconsejable tener uno), o enviarnos un email con lo que ha pasado, e incluso limpiar el error y hacer como que no ha pasado nada…

Bueno, ahí va el código:

protected void Application_Error(Object sender, EventArgs ea)
{
    string uriFormat = "\r\n\r\nURI: {0}\r\n\r\n";
    string exceptionFormat = "{0}: \"{1}\"\r\n{2}\r\n\r\n";

    StringBuilder message = new StringBuilder();

    if (Request != null)
    {
        message.AppendFormat(uriFormat, Request.Path);
    }

    if (Server != null)
    {
        Exception e;
        for (e = Server.GetLastError(); e != null; e = e.InnerException)
        {
            message.AppendFormat(exceptionFormat, e.GetType().Name, e.Message, e.StackTrace);
        }
    }

    // En este caso, escribimos en nuestro log
    MyAppLogger.Log("** APP ERROR Sin controlar la excepción **\n" + message.ToString());

    //Server.ClearError(); // descomentar esto para cancelar el error
}