Instalé DotNetOpenAuth SDK-3.4.5.10201.vsix y no puedo hacerlo funcionar. Funciona localmente (cuando ejecuto como localhost) pero cuando intento publicarlo no funciona.
El mensaje de error de IIS que recibo es
Resumen de error Error
HTTP 500.22 - Error interno del servidor
Se ha detectado una configuración ASP.NET que no se aplica en el modo de canalización administrada integrada.
Y
Module ConfigurationValidationModule Notification BeginRequest Handler StaticFile Error Code 0x80070032
entonces hay algunas sugerencias sobre cómo resolver el problema:
Cosas que puedes probar:
Migre la configuración a la
system.webServer/modules
sección. Puede hacerlo de forma manual o mediante el uso de appcmd desde la línea de comandos - por ejemplo,%SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/"
. El usoAppCmd
para migrar su aplicación le permitirá funcionar en modo Integrado y continuar trabajando en modo Clásico y en versiones anteriores de IIS.Si está seguro de que está bien ignorar este error, se puede deshabilitar estableciendo
system.webServer/validation@validateIntegratedModeConfiguration
en falso.Alternativamente, cambie la aplicación a un grupo de aplicaciones en modo clásico, por ejemplo
%SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool"
,. Solo haga esto si no puede migrar su aplicación.
(Establezca "Sitio web predeterminado" y "Grupo de aplicaciones .NET clásico" en la ruta de la aplicación y el nombre del grupo de aplicaciones)
Pero el problema es que no tengo acceso al servidor ISS ya que no soy el propietario del mismo. ¿Hay alguna forma de resolver esto?
true
es para que pueda dejar sus ruedas de entrenamiento encendidas y que IIS le grite cada vez que agregue una configuración que no funcionará en modo integrado. Esto es para los inexpertos, pero se interpone en el camino.Agregar
<validation validateIntegratedModeConfiguration="false"/>
aborda el síntoma, pero no es apropiado para todas las circunstancias. Habiendo solucionado este problema varias veces, espero ayudar a otros no solo a superar el problema, sino también a comprenderlo. (Lo que se vuelve cada vez más importante a medida que IIS 6 se desvanece en mitos y rumores).Antecedentes:
Este problema y la confusión que lo rodea comenzaron con la introducción de ASP.NET 2.0 e IIS 7. IIS 6 tenía y sigue teniendo solo un modo de canalización, y es equivalente a lo que IIS 7+ llama modo "Clásico". El segundo modo de canalización más nuevo y recomendado para todas las aplicaciones que se ejecutan en IIS 7+ se llama modo "Integrado".
Entonces, ¿cuál es la diferencia? La diferencia clave es cómo ASP.NET interactúa con IIS.
Modo clásicoestá limitado a una tubería ASP.NET que no puede interactuar con la tubería IIS. Esencialmente, entra una solicitud y si a IIS 6 / Classic se le ha dicho, a través de la configuración del servidor, que ASP.NET puede manejarlo, entonces IIS transfiere la solicitud a ASP.NET y continúa. La importancia de esto se puede deducir de un ejemplo. Si tuviera que autorizar el acceso a archivos de imágenes estáticas, no podría hacerlo con un módulo ASP.NET porque la canalización de IIS 6 manejará esas solicitudes y ASP.NET nunca verá esas solicitudes porque nunca se entregaron . * Por otro lado, autorizar qué usuarios pueden acceder a una página .ASPX como una solicitud de Foo.aspx es trivial incluso en IIS 6 / Classic porque IIS siempre entrega esas solicitudes a la canalización de ASP.NET. En modo clásico, ASP.NET no sabe lo que no tiene
Se recomienda el modo integrado porque los controladores y módulos ASP.NET pueden interactuar directamente con la tubería IIS. La canalización de IIS ya no entrega la solicitud a la canalización de ASP.NET, ahora permite que el código de ASP.NET se enganche directamente en la canalización de IIS y todas las solicitudes que lo afectan. Esto significa que un módulo ASP.NET no solo puede observar solicitudes a archivos de imágenes estáticas, sino que puede interceptar esas solicitudes y tomar medidas al denegar el acceso, registrar la solicitud, etc.
Superar el error:
Por otra parte, tal vez le esté dando a su aplicación una cirugía estética o estaba funcionando muy bien hasta que instaló una biblioteca de terceros a través de NuGet, manualmente o por algún otro medio. En ese caso, es totalmente posible
httpHandlers
ohttpModules
se ha agregado asystem.web
. El resultado es el error que está viendo porque estávalidateIntegratedModeConfiguration
predeterminadotrue
. Ahora tienes dos opciones:httpHandlers
yhttpModules
desystem.web
. Hay un par de posibles resultados de esto:httpHandlers
y loshttpModules
paquetes NuGet siguen agregandosystem.web
, oye, haz lo que necesites.validateIntegratedModeConfiguration
afalse
, pero por lo menos saben lo que está haciendo y por qué es importante.Buenas lecturas:
* Por supuesto, hay formas de introducir todo tipo de cosas extrañas en la canalización de ASP.NET desde IIS 6 / Classic a través de encantamientos como asignaciones de comodines , si te gusta ese tipo de cosas.
fuente
Si aún necesita usar el Módulo HTTP, debe configurarlo (.NET 4.0 framework) de la siguiente manera:
fuente
Me encontré con este problema pero tuve una solución diferente. Implicaba actualizar
Control Panel>Administrative Tools>IIS Manager
y revertir la canalización administrada de mi sitio de aplicaciones deIntegrated
aClassic
.fuente
Application Pools
árbol de la izquierda, haga doble clic en el grupo que desea cambiar y elija el modo de canalización.Compruebe si hay algún conflicto en su autenticación de IIS. es decir, si habilita la autenticación anónima y la suplantación de ASP.NET, ambos pueden causar el error también.
fuente
En su web.config asegúrese de que existan estas claves:
Además de comprobar Asp.Net Impresonation = Deshabilitar en autenticación de sitio IIS
fuente
Me encontré con este problema e inspirado por la respuesta de @Jeremy Cook, mordí la bala para descubrir qué demonios causó que el modo integrado IIS 7 no le gustara mi web.config. Aquí está mi escenario:
Quería usar el enrutamiento de atributos en un proyecto que (desafortunadamente) tenía que usar .NET 4 y, por lo tanto, no podía usar Web API 2.2 (que necesita .NET 4.5). El bien intencionado paquete NuGet agregó esta sección debajo de la
<system.web>
sección:[Digo bien, porque esta parte es necesaria en versiones anteriores de IIS]
¡Eliminar esta sección me hizo pasar el HTTP 500.23!
Resumen: Secundo las palabras de Jeremy de que es importante entender por qué las cosas no funcionan en lugar de simplemente "enmascarar el síntoma". Incluso si tiene que enmascarar el síntoma, sabe lo que está haciendo (y por qué) :-)
fuente
Esto funcionó para mí:
Parece que algo salió mal cuando originalmente creé el sitio. Odio las soluciones que son similares a "Reinicie su máquina, luego reinstale Windows" sin saber qué causó el error. Pero, esto funcionó para mí. Rápido y sencillo. Espero que ayude a alguien más.
fuente
En mi caso, me faltaba dll en la carpeta bin a la que se hacía referencia en el archivo web.config. Por lo tanto, compruebe si estaba utilizando alguna configuración en web.config pero en realidad no tiene dll.
Gracias
fuente
Me tomó algunas horas resolver esto porque todas las configuraciones que encontré aquí sobre este error eran las mismas, pero aún no funcionaba. El problema era que tenía una carpeta en mi servicio web desde la cual el archivo debería enviarse al dispositivo WinCE, después de convertir esa carpeta en una aplicación con Classic.NetAppPool comenzó a funcionar.
fuente
El siguiente paso resolvió mi problema:
Abierto
CMD
Solicitud con privilegios de administrador.Correr :
iisreset.
Espero que esto ayude.
fuente
El método para local es el error
fuente