Busca lo que quieras

Mostrando entradas con la etiqueta IIS. Mostrar todas las entradas
Mostrando entradas con la etiqueta IIS. Mostrar todas las entradas

Llamar método por otro hilo sin peligro a caerse en .NET

IIS por defecto tiene la maña de coger tus hilos que lanzes por segundo plano y MATARLOS.

Que asesino eres IIS!

Entonces, lo que necesitamos es colocarnos un ESCUDO PROTECTOR!.

Para lograrlo entonces tenemos que implementar una clase (que por cierto no hice yo, sino un duro de stackoverflow y que lo compartió al mundo... gracias stackoverflow y Gervasio Marchand).

Ojo que hay que importar lo siguiente en la clase:

using System.Web.Hosting;
using System.Threading.Tasks;

Esta es la clase:

 public class BackgroundWorker
    {
        /// <summary>
        /// Runs a background task that is registered with the hosting environment
        /// so it is guaranteed to finish executing.
        /// </summary>
        /// <param name="action">The lambda expression to invoke.</param>
        public static void Run(Action action)
        {
            new IISBackgroundTask().DoWork(action);
        }

        /// <summary>
        /// Generic object for completing tasks in a background thread
        /// when the request doesn't need to wait for the results 
        /// in the response.
        /// </summary>
        class IISBackgroundTask : IRegisteredObject
        {
            /// <summary>
            /// Constructs the object and registers itself with the hosting environment.
            /// </summary>
            public IISBackgroundTask()
            {
                HostingEnvironment.RegisterObject(this);
            }

            /// <summary>
            /// Called by IIS, once with <paramref name="immediate"/> set to false
            /// and then again with <paramref name="immediate"/> set to true.
            /// </summary>
            void IRegisteredObject.Stop(bool immediate)
            {
                if (_task.IsCompleted || _task.IsCanceled || _task.IsFaulted || immediate)
                {
                    // Task has completed or was asked to stop immediately, 
                    // so tell the hosting environment that all work is done.
                    HostingEnvironment.UnregisterObject(this);
                }
            }

            /// <summary>
            /// Invokes the <paramref name="action"/> as a Task.
            /// Any exceptions are logged
            /// </summary>
            /// <param name="action">The lambda expression to invoke.</param>
            public void DoWork(Action action)
            {
                try
                {
                    _task = Task.Factory.StartNew(action);
                }

                catch (Exception ex)
                {
                    //Logger.Log(ex);
                }
            }

            private Task _task;

        }
    }

Una vez tengamos la clase metida en nuestro cs o donde vayas a lanzar el método sencillamente puedes llamarlo así:

BackgroundWorker.Run(() =>
                                      MiMetodoAsincronoConEscudo(parametro1, parametro2, parametro3)
                                );// run this in a background thread

Y todos seamos felices!!! Ahora nunca nuestros hilos de segundo plano los matará IIS... GAnamos!!!!!

Para más información puedes mirar los siguientes links:

El peligro de implementar tareas en segundo plano.

Una confirmación de que IIS mata los hilos

El link que nos salva a todos.

Y de nuevo una explicación detallada de como podría funcionar el ESCUDO

Aquí hay un framework que ayuda a esto también.

Sean felices! :) Y siéntanse libres de opinar ;)

Seguridad a una aplicacion .net - web.config

Algunos tips que al agregarlos pueden dar mayor seguridad a una aplicacion .net, muchas cosas son más que todo en el web.config y en el global.asax.


1. Revisar que si se coloca otra pagina mande a la pagina de error personalizada
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/error.aspx" /> 

2. Agregar las dos ultimas propiedades
<system.web>
<pages styleSheetTheme="Default" validateRequest="false" enableViewStateMac="true" viewStateEncryptionMode="Always">
<machineKey validation="3DES" />

3. en web.server
<system.webServer>
  <httpProtocol>
 <customHeaders>
  <remove name="X-Powered-By" />
 </customHeaders>
</httpProtocol>

4. agregar la ultima propiedad
<httpRuntime requestValidationMode="2.0" enableVersionHeader="false" />


5. copiar el archivo en app_code, que tenga este contenido y que se llame: CustomHeaderModule.cs

using System.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for CustomHeaderModule
/// </summary>
/// 
/// 
namespace StrongNamespace.HttpModules
{
    public class CustomHeaderModule : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += OnPreSendRequestHeaders;
        }

        public void Dispose() { }

        void OnPreSendRequestHeaders(object sender, EventArgs e)
        {
            System.Web.HttpContext.Current.Response.Headers.Set("Server", "IQ");
        }
    }
}

y agregar las siguientes lienas en el web.config:
  <system.webServer>
    <modules>

<add name="CustomHeaderModule"
       type="StrongNamespace.HttpModules.CustomHeaderModule" />

  </modules>

6. en system.web
<httpCookies httpOnlyCookies="true" requireSSL="true" />
Creo que lo anterior requiere de un certificado SSL

7. En el global.asax.

void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext.Current.Response.AddHeader("x-frame-options", "DENY");
}

8. en el global.asax en el metodo: Application_Start

MvcHandler.DisableMvcResponseHeader = true;

9. podemos probar nuestro sitio web con esta url.
https://asafaweb.com/

Si saben más por fa, compartamoslo aquí...

Sean felices! :) Y siéntanse libres de opinar ;)

Solución para Could not load type System.ServiceModel.Activation.HttpModule

Bueno, gracias a Bruno por tan importante tip encontré la solución.

Lo que hay que hacer es ingresar a la carpeta del framework 4.0 donde la tengamos instalada, en mi caso:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

Y ingreso por medio del CMD a esta ruta.

Y finalmente ejecuto:

aspnet_regiis.exe -iru

Y listo, ahora funciona correctamente mi sitio en .net con framework 4.0.

Por cierto, no olvidemos que en algunos casos hay que quitar todas las referencias a framework 3.5 o sino también saca error.

Sean felices! :) Y sientanse libres de opinar ;)

HTTP Error 404.17 con IIS 7.5

Hola, este error se solucionó para un equipo con framework 4.0 con pool en Integrated Mode en un windows 2008 server standard R2:

Este post aplica para los siguientes dos errores:

HTTP Error 404.17 (este es el primero que me salio, y cuando lo solucioné, me genero el siguiente)

y

The WebResource.axd handler must be registered in the configuration to process this request

 para solucionar estos errores solo copien lo siguiente en el web.config donde corresponde.


<system.webServer>
<handlers>
<add name="AssemblyResourceLoader-IntegratedOTRONOMBREPARAQUENOSAQUEERROR" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode" />
<add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
  </system.webServer>


Nota 1: no tengo idea porque tengo que sobreescribir el webresource.axd, pero asi funcionó, increible, ni idea porque, pero funcionó.

Nota 2: Toco agregar el PageHandlerFactory-Integrated-4.0 porque por defecto cuando lo paso a framework 4.0 no tenia el handler.

Nota 3: Tengo configurada la aplicación a un pool que esta configurado como "integrated mode".

Espero les sirva.

Sean felices! :) Y sientanse libres de opinar ;)

Como activar SSL en mi página con IIS 7.0 o 7.5

Hola hola.

Bueno, solo colocaré aquí referencias de sitios que me ayudaron a lograrlo.

Pero le doy las gracias a internet y a los editores de los articulos que citaré.

Un poco de teoría (por si es tu primera vez, ;) ) sin explicacación de IIS:

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=iisssl


Aquí los pasos uno por uno.

http://speakingin.net/2007/04/06/trucos-habilitar-ssl-en-iis-70-usando-certificados-firmados-por-nosotros/

http://blackslot.com/blog/2010/01/crear-un-certificado-ssl-autofirmado-en-iis7/



Sean felices! :) Y sientanse libres de opinar ;)

Rewrite from domain.com to www.domain.com en IIS

Hola a todos.

Para los que queremos que nuestro dominio siempre venga con www. Basta con:

1. Tener instalado IIS 7 o 7.5
2. Tener instalado el módulo de rewrite URL para IIS.
3. Colocar en el web.config de la raiz del sitio lo siguiente:


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
        <rules>
        <clear />
        <rule name="WWW Rewrite" enabled="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-zA-Z0-9]+)$" />
            </conditions>
            <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent" />
        </rule>
        </rules>
    </rewrite> 

</system.webServer>
</configuration>


Espero les sirva. Se cuidan.

Sean felices! :) Y sientanse libres de opinar ;)

Could not load file or assembly 'AjaxControlToolkit' or one of its dependencies.

Me saco unas 4 horas este error:

Lo siguiente puede suceder por muchas cosas, pero en mi caso, configuración del IIS.

Could not load file or assembly 'AjaxControlToolkit' or one of its dependencies.

Solución asegurarme que el sitio estuviera configurado como una aplicación (de tal manera que detectará la carpeta BIN y por supuesto el AjaxControlToolkit).

Todo esto gracias a:

netrithms en el foro de microsoft.  En la ruta: http://forums.asp.net/t/1269455.aspx/1?Parser+Error+Could+not+load+file+or+assembly+AjaxControlToolkit+or+one+of+its+dependencies+The+system+cannot+find+the+file+specified+


Espero les sirva esta referencia.


Sean felices! :) Y sientanse libres de opinar ;)

Bad Request (Invalid Hostname) IIS 7.5 Express

Hola a todos.

Seré breve, el problema era que tenía un IIS 7.5 Express, y que problema para configurar nuevas aplicaciones y directorios virtuales.

Lo importante es que al menos  nos funcione la página inicial de nuestro IIS.

Y dentro de la carpeta IISExpress/config en el archivo applicationhost la configuración que me funcionó inicialmente fue:

Esto solo es para crear directorio virtual.


<sites>
            <site name="WebSite1" id="1" serverAutoStart="true">
                <application path="/">
                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
<virtualDirectory path="/nuevodirectoriovirtual" physicalPath="%IIS_SITES_HOME%\nombredeldirectoriofisico" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation=":8080:localhost.com" />
                </bindings>
            </site>

            <siteDefaults>
                <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
                <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
            </siteDefaults>
            <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
            <virtualDirectoryDefaults allowSubDirConfig="true" />
        </sites>


Y pues en la URL tengo que colocar:

http://localhost:8080/nuevodirectoriovirtual/index.aspx

Y bueno, me funcionó, ahora seguiré configurando el ajax!!! que locura esto.

Espero les sirva.

Sean felices! :) Y sientanse libres de opinar ;)

Sys is not defined - ScriptResource 404 Error

Hola a todos.

Esto me pasa especificamente con el priview de PLESK, si no es su caso, para mi entre las mejores soluciones las brinda este blog.

Y analizando con firebug el problema era que NO HABIA PROBLEMA... JA JA

O sea, estaba utilizando el preview del plesk y como sabran, eso genera una URL extraña (según la versión del plesk), y claro al analizar con firebug encontré que el ScriptResource y el Webresource lo estaba llamando de la famosa y maravillosa ip de mi servidor y no de la ruta completa.

Me explico con un ejemplo:

Esta es la URL de preview de plesk de prueba de mi sitio:


https://200.10.10.10:8443/sitepreview/http/misitio.com/formulario.aspx (contiene ajax)

Y mire en firebug y me estaba llamando el webresource y el scriptresource como muestro a continuación:

https://200.10.10.10:8443/WebResource.axd?d=eqCzDS4HOypCBuldUaGXNa875qnnSFyqUHN6tdYSCsR76xVrJZ3IOl22ASy722yL2PEIgW5DM-b4IwAwHZG0SCG_LafAwW0liFtIWmmyDaq1x1-dwyxJPqDCggOtzOc1Bp-OmVDoTEB_E-fiX7OD3G6KEIw1&t=634442419042482180

Pues claro!!! Logicamente si llama esta ruta no va a encontrar el scriptresource ni tampoco el webresource entonces para probar lo que hice fue probando con la siguiente ruta...


https://200.10.10.10:8443/sitepreview/http/misitio.com/WebResource.axd?d=eqCzDS4HOypCBuldUaGXNa875qnnSFyqUHN6tdYSCsR76xVrJZ3IOl22ASy722yL2PEIgW5DM-b4IwAwHZG0SCG_LafAwW0liFtIWmmyDaq1x1-dwyxJPqDCggOtzOc1Bp-OmVDoTEB_E-fiX7OD3G6KEIw1&t=634442419042482180

Y me trajo los datos!!! UJU!!! Eso quiere decir que ni se les ocurra probar un sitio con ese famoso sitepreview de plesk (al menos en mi caso la versión 10.2), pues no funcionará el ajax, y por consiguiente las páginas donde lo manejas.

Espero les sirva.

Sean felices! :) Y sientanse libres de opinar ;)

Error405 Verbose IIS7 in facebook iframe

Hola compañeritos.

Esto gracias a Joseph Jun.

Me toco montar un aplicativo de facebook en un servidor con IIS 7.0 y para que no sacara el error de verbose 405 lo me toco hacer fue:

Agregar una etiqueta handlers en el archivo web.config de la siguiente manera. (en cursiva y subrayado dejo lo que hay que agregar, pero, coloco todo el xml siguiente que corresponde al web.config para que se guien mejor exactamente en donde hay que colocarlo).

<system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <modules>
            <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        </modules>
        <handlers>
            <remove name="WebServiceHandlerFactory-Integrated"/>
            <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="HTML" path="*.html" verb="*" modules="IsapiModule" scriptProcessor="C:\windows\system32\inetsrv\asp.dll" resourceType="File" requireAccess="Script" />

        </handlers>
    </system.webServer>


Espero les sirva.

Sean felices.

HTTP 405 verb error facebook con IIS

Hola.

El problema es: Cuando cargo mi aplicativo de facebook, me sale el siguiente error.
Especificamente, sale este error cuando la pagina inicial de mi aplicativo es un archivo .htm. 





Los pasos para solucionarlo es:

1) Ingresar a IIS.

2) Se supone que tenemos definido la carpeta de nuestro server como un applicativo. Osea con el logo así:




3) Ingresamos a las propiedades del aplicativo.















4. Clic en Configuration.









5. Clic en Add




















6.  Colocar tal como esta aquí.












7. OK, OK, OK, etc. OK.

Eso era todo.

Esto es para IIS 6.0, me imagino que sera similar para versiones posteriores de IIS.

//editado... para IIS 7.0 la solución esta en esta entrada.

Saludos.

Dar las gracias es siempre agradable. Si tienes dudas, has tu comentario y preguntame...

Forzar descarga de archivo con IIS

Para hacerlo, se selecciona el archivo (el que sea, JPG, PDF, etc) dentro del IIS.

Los pasos son:
Abrir el IIS, buscar el archivo que deseamos que solo se descargue y no se abra en el browser.
Boton derecho del mouse sobre el archivo.
Clic en "Propiedades"
Ir a pestaña "HTTP Headers"
En el recuadro "Custom HTTP Headers" clic en el boton "Add" o "Agregar"
En custom header name colocar: "Content-Disposition" (sin comillas)
En custom header value colocar: "attachment" (sin comillas)

Saludos y sean felices.

Dar las gracias es siempre agradable. Si tienes dudas, has tu comentario y preguntame...

"HTTP Error 503. The service is unavailable" when opening Parallels Plesk Panel

Gracias por la ayuda Parallels.

Problema: Instalarle el modulo de URL Rewrite Module 2.0 provisto por microsoft en la pagina oficial de IIS. a un server con plesk panel , windows web server 2008 e IIS 7.0. Cuando se instala el modulo, no funciona el panel.

Aunque quizas no es para muchos claro que hay que hacer, aqui dejo los pasos para la solución:

1. Ir a IIS 7 Manager y hacer clic sobre PleskControlPanel.
2. En la sección URL Rewrite... boton derecho del mouse.
3. Edit Permisos. Ir la pestaña, seguridad.



4. Agregar permisos de modificación al usuario psaadm.

5. Stop service plesk (en teoria deberia haber un logo de plesk en la parte derecha de la barra de tareas), clic derecho y STOP.
6. Start service plesk.
7. Funciona!

Cualquier duda pues preguntar... Saludos.

Palabras Clave

.NET (93) AJAX (2) ajaxcontroltoolkit (2) Algoritmos (1) android (1) Angular (1) Arrays (1) AS2 o ActionScript 2.0 (1) AS3 o ActionScript 3.0 (64) ASP (7) ASP.NET (3) Azure (1) Azure DevOps (2) Backup (2) Batch (4) blogger (1) Browser Support (2) C# (53) Charts (1) Chorme extensions (1) Chrome (3) cmd (18) código postal (1) Colombia tips (1) command (1) Conexion remota (1) Controles Web .NET (24) Cookies (1) cordova (1) CSS (14) CSV (5) Cufon (1) DateTime (2) deployment (2) Desarrollo movil (2) Desarrollo web (5) Diseño (4) DNN o DotNetNuke (5) docker (1) Encuestas (1) Entity Framework (1) Error (1) Eval (2) Excel (4) Expresiones regulares (2) Facebook (14) fechas (1) Fiddler (1) FileUpload (1) Filezilla (1) Firefox (2) Flash (9) Fonts (3) FQL (1) frameworks (2) Futuro de la web (1) git (1) Google Code (13) Google Maps (4) hackintosh (3) hazard 10.6.2 (3) herramientas para developers (1) highchart (1) Hilos (2) Hosting Windows (18) HTML (38) HTML5 (6) IDE (1) IE (2) IE9 (1) IIS (13) imagenes (3) jasmine (2) java (1) jqgrid (2) Jquery y Javascript (90) jquery-ui (5) jQueryMobile (1) JSON (1) knockout (4) library (1) Link Interesantes (2) List (1) Macro (2) Matemáticas (2) Membership (6) Memoria (1) Mis Experiencias (3) momentjs (1) ms-dos (1) MSN (1) MVC (1) MVC4 (3) MySQL (2) node.js (4) Notepad++ (3) Notificaciones (1) ObjectDataSource (2) Online (2) Opinión (4) OSX (3) Parallels Plesk Panel (1) petapoco (1) PhantomJS (1) PHP (4) Porqué este blog (1) Powershell (1) Razor (3) Redes (2) REGEX (4) REST (1) SDK Android (1) Seguridad (1) SelectParameters (1) Selenium (2) sencha (3) sencha cmd (2) SEO (1) SMTP (2) Software útil (8) Solución (1) Soporte (1) SQL (15) SQL Server (58) SQLite (2) Store Procedures (20) String (5) Testing Code (2) texto (2) tips de datos (1) tips de desarrollo (1) TutoFaceAS3 (4) TutoProAS3 (4) Tutoriales (7) Tweenlite effects (3) Últimas noticias (1) unit testing (1) usb (1) VBA (1) Video (1) virus (1) Web API (2) Web Browsers (1) Web Forms (7) web.config (1) Webmaster (8) Webmatrix (1) webrole (1) webservices (1) webstorm (1) Win Forms (5) Windows (21) Windows 7 (1) Windows 8 (1) XML (2) Youtube API (2)