2009-10-04 14 views
12

Właśnie stworzyłem moją pierwszą usługę sieciową.Problem z serwisem WWW Asp.Net

używam:

  • IIS 7.5
  • VS 2008
  • Net 3,5

Po zainstalowaniu mojego IIS i przejdź do mojego pliku ASMX w IE pojawia się błąd następująco:

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

I googled to od 2 godzin ale nie znajdę rozwiązania.

My Config jest tutaj:

<?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

Prosimy o opublikowanie pliku web.config, abyśmy mogli Ci pomóc. Ten błąd jest najprawdopodobniej spowodowany błędem konfiguracji. –

+0

Spróbuj wyszukać MSDN w poszukiwaniu problemów specyficznych dla firmy Microsoft przed google: http://social.msdn.microsoft.com/Search/en-US?query=ManagedPipelineHandler –

Odpowiedz

9

porządku ... znalazłem. 1 z 1000 witryn w Google mówi: Sprawdź, czy ASP.Net w IIS 7 jest poprawnie zainstalowany - i: Tak, nie było. W instalatorze systemu Windows 7 dla IIS nie jest automatycznie wybierany.

+1

Cieszę się, że to znalazłeś. FYI, pierwsze kilka wyników z http://social.msdn.microsoft.com/Search/en-US?query=ManagedPipelineHandler mówi to samo. –

+1

Dzięki Bogu za SO. Miałem dokładnie ten sam problem i myślałem, że ASP.NET jest już zainstalowany, ponieważ moja aplikacja MVC działała dobrze! Dziękuję :) –

22

Kolejny potencjalny scenariusz dla tego błędu pojawia się po zainstalowaniu środowiska .NET 4 przed IIS. Jeśli jest zainstalowany ASP.NET, ale wciąż dostać ten błąd, spróbuj następujące polecenia jako administrator:

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

Ścieżka ta może nie być dokładnie taki sam jak na komputerze, ale powinna być zbliżona.

+0

To była przyczyna mojego problemu. Dziękujemy – Germstorm

+0

To był problem w moim przypadku. Dzięki :-) –

+0

Należy zauważyć, że ta metoda nie jest obsługiwana w systemie Windows Server 2012 (i później, prawdopodobnie) informuje użytkownika o użyciu nowego menedżera serwera. – MGOwen

2

Gobsmacked ... nie spodziewałem się, że to zadziała, ale dla mnie.

prostu zabrakło:

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

Dzięki to zadziałało dla mnie też –

+0

Trzy lata później i to wciąż jest prawidłowe rozwiązanie: P – ernest

1

miałem podobny problem, ale to jest rozwiązane w następujący sposób:

  1. Otwarte cmd jako administrator

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

  3. Naciśnij enter

To spowoduje zarejestrowanie DotNetFramework.

Powiązane problemy