Asp.net

WebService 問題 Asp.Net

  • January 13, 2017

我剛剛創建了我的第一個 Web 服務。

我用:

  • IIS 7.5
  • 對比 2008
  • .Net 3.5

安裝我的 IIS 並在 IE 中瀏覽到我的 asmx 文件後,出現以下錯誤:

HTTP 錯誤 500.21 - 內部伺服器錯誤處理程序“ScriptHandlerFactory”的模組列表中有一個錯誤模組“ManagedPipelineHandler”

我用Google搜尋了 2 個小時,但沒有找到解決方案。

我的配置在這裡:

<?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>
           &lt;remove verb="*" path="*.asmx"/&gt;
           &lt;add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/&gt;
           &lt;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"/&gt;
           &lt;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"/&gt;
       &lt;/httpHandlers&gt;
       <httpModules>
           &lt;add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/&gt;
       &lt;/httpModules&gt;
   &lt;/system.web&gt;
   &lt;system.codedom&gt;
       &lt;compilers&gt;
           &lt;compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"&gt;
               &lt;providerOption name="CompilerVersion" value="v3.5"/&gt;
               &lt;providerOption name="WarnAsError" value="false"/&gt;
           &lt;/compiler&gt;
       &lt;/compilers&gt;
   &lt;/system.codedom&gt;
   &lt;!-- 
           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.
       --&gt;
   &lt;system.webServer&gt;
       &lt;validation validateIntegratedModeConfiguration="false"/&gt;
       &lt;modules&gt;
           &lt;remove name="ScriptModule"/&gt;
           &lt;add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/&gt;
       &lt;/modules&gt;
       &lt;handlers&gt;
           &lt;remove name="WebServiceHandlerFactory-Integrated"/&gt;
           &lt;remove name="ScriptHandlerFactory"/&gt;
           &lt;remove name="ScriptHandlerFactoryAppServices"/&gt;
           &lt;remove name="ScriptResource"/&gt;
           &lt;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"/&gt;
           &lt;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"/&gt;
           &lt;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"/&gt;
       &lt;/handlers&gt;
   &lt;/system.webServer&gt;
   &lt;runtime&gt;
       &lt;assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"&gt;
           &lt;dependentAssembly&gt;
               &lt;assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/&gt;
               &lt;bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/&gt;
           &lt;/dependentAssembly&gt;
           &lt;dependentAssembly&gt;
               &lt;assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/&gt;
               &lt;bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/&gt;
           &lt;/dependentAssembly&gt;
       &lt;/assemblyBinding&gt;
   &lt;/runtime&gt;
&lt;/configuration&gt;

好吧……找到了。Google 的 1000 個站點中有 1 個說:檢查 IIS 7 中的 ASP.Net 是否正確安裝 - 並且:是的,沒有。在 IIS 的 Windows 7 安裝程序中,不會自動選擇它。

如果在 IIS 之前安裝 .NET 4 框架,則會出現此錯誤的另一種潛在情況。如果安裝了 ASP.NET,但仍然出現此錯誤,請以管理員身份嘗試以下命令:

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

該路徑可能與您機器上的路徑不完全相同,但應該很接近。

引用自:https://stackoverflow.com/questions/1517735