2009-10-04 13 views
12

Acabo de crear mi primer servicio web.WebService Problema Asp.Net

que utilizo:

  • IIS 7.5
  • VS 2008
  • .Net 3,5

Después de instalar mi IIS y navegue hasta mi archivo asmx en IE me sale el error siguiente:

HTTP Error 500.21 - Internal Server Error Handler "ScriptHandlerFactory" has a bad module "ManagedPipelineHandler" in its module list

Lo busqué en Google desde 2 horas pero no encuentras una solución.

Mi Config está aquí:

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
     <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
       <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
       <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
        <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/> 
        <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
        <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
        <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
       </sectionGroup> 
      </sectionGroup> 
     </sectionGroup> 
    </configSections> 
    <appSettings/> 
    <connectionStrings> 
       </connectionStrings> 
    <system.web> 
     <!-- 
       Legen Sie beim Kompilieren debug="true" fest, um 
       Debugsymbole in die kompilierte Seite einzufügen. 
       Da dies die Leistung beeinträchtigt, sollte der 
       Wert nur beim Entwickeln auf "True" gesetzt werden. 
      --> 
     <compilation debug="true"> 
      <assemblies> 
       <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
       <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
       <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
      </assemblies> 
     </compilation> 
     <!-- 
       Der Abschnitt <authentication> ermöglicht die Konfiguration 
       des Sicherheitsauthentifizierungsmodus, mit dem 
       ASP.NET eingehende Benutzer identifiziert. 
      --> 
     <authentication mode="Windows"/> 
     <!-- 
       Der Abschnitt <customErrors> ermöglicht die Konfiguration 
       der Vorgehensweise bei unbehandelten Fehlern während 
       der Anforderungsausführung. Insbesondere können 
       Entwickler HTML-Fehlerseiten konfigurieren, die anstelle 
       einer Fehlerstapelüberwachung angezeigt werden. 

      <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 
       <error statusCode="403" redirect="NoAccess.htm" /> 
       <error statusCode="404" redirect="FileNotFound.htm" /> 
      </customErrors> 
      --> 
     <pages> 
      <controls> 
       <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      </controls> 
     </pages> 
     <httpHandlers> 
      <remove verb="*" path="*.asmx"/> 
      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
     </httpHandlers> 
     <httpModules> 
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </httpModules> 
    </system.web> 
    <system.codedom> 
     <compilers> 
      <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
       <providerOption name="CompilerVersion" value="v3.5"/> 
       <providerOption name="WarnAsError" value="false"/> 
      </compiler> 
     </compilers> 
    </system.codedom> 
    <!-- 
      Der system.webServer-Abschnitt ist zum Ausführen von ASP.NET-AJAX unter 
      Internetinformationsdienste 7.0 erforderlich. Für frühere Versionen von 
      IIS ist er nicht erforderlich. 
     --> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false"/> 
     <modules> 
      <remove name="ScriptModule"/> 
      <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </modules> 
     <handlers> 
      <remove name="WebServiceHandlerFactory-Integrated"/> 
      <remove name="ScriptHandlerFactory"/> 
      <remove name="ScriptHandlerFactoryAppServices"/> 
      <remove name="ScriptResource"/> 
      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.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=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </handlers> 
    </system.webServer> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> 
       <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> 
       <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 
+0

Publique su web.config para que podamos ayudarlo. Este error es más probable debido a un error de configuración. –

+0

Pruebe la búsqueda de MSDN para problemas específicos de Microsoft antes de google: http://social.msdn.microsoft.com/Search/en-US?query=ManagedPipelineHandler –

Respuesta

9

bien ... lo encontraron. 1 de 1000 sitios en Google dice: compruebe si ASP.Net en IIS 7 está instalado correctamente, y: sí, no fue así. En el instalador de Windows 7 para IIS, no se selecciona automáticamente.

+1

Me alegro de que lo haya encontrado. FYI, los primeros resultados de http://social.msdn.microsoft.com/Search/en-US?query=ManagedPipelineHandler dicen lo mismo. –

+1

Gracias a Dios por SO. Tuve exactamente el mismo problema y pensé que ASP.NET ya estaba instalado ya que mi aplicación MVC funcionaba bien. Gracias :) –

22

Otro posible escenario para este error aparece si instala el marco .NET 4 antes de IIS. Si se instala ASP.NET, pero sigue recibiendo este error, pruebe el siguiente comando como administrador:

\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i 

Ese camino puede no ser exactamente el mismo que el de su máquina, pero debe estar cerca.

+0

Esta fue la causa de mi problema. Gracias – Germstorm

+0

Este fue el problema en mi caso. Gracias :-) –

+0

Tenga en cuenta que este método no es compatible con Windows Server 2012 (y más adelante, presumiblemente) le dice que use el nuevo administrador de servidor. – MGOwen

2

Gobsmacked ... no esperaba que esto funcionara pero lo hizo por mí.

Simplemente corrió:

\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i 
+0

Gracias también funcionó para mí –

+0

Tres años más tarde y esta sigue siendo una solución válida: P – ernest

1

tuve problema similar pero se resuelve mediante el procedimiento siguiente:

  1. cmd abiertas como administrador

  2. Tipo: %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -I

  3. Presione enter

Esto registrará el DotNetFramework.