【问题标题】:HTTP Error 404.17 - Not FoundHTTP 错误 404.17 - 未找到
【发布时间】:2011-08-16 18:58:41
【问题描述】:

在 VS 2008 中我可以运行 .svc 但在生产 IIS 7 上我不能。我得到这个错误。我正在使用 x64 win。

我跑

C:\Windows\Microsoft.NET\Framework\v2.5.0.30319>aspnet_regiis.exe -i
Start installing ASP.NET (4.0.30319).
.........................

C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe -i
The error indicates that IIS is not installed on the machine. Please install IIS
Finished installing ASP.NET (2.0.50727).

但它是一样的。我运行 VS 2008。应用程序池:NET framweork 是 2.0。我启用了 32 位应用程序

    Error Summary
HTTP Error 404.17 - Not Found
The requested content appears to be script and will not be served by the static file handler.
Detailed Error Information
Module  StaticFileModule
Notification    ExecuteRequestHandler
Handler StaticFile
Error Code  0x80070032
Requested URL   http://192.168.2.4:80/Service.svc
Physical Path   C:\inetpub\wwwroot\WebServices\Service.svc
Logon Method    Anonymous
Logon User  Anonymous
Most likely causes:

    The request matched a wildcard mime map. The request is mapped to the static file handler. If there were different pre-conditions, the request will map to a different handler.

Things you can try:

    If you want to serve this content as a static file, add an explicit MIME map.

编辑:

web.config

<?xml version="1.0"?>

<!--
    Note: As an alternative to hand editing this file you can use the 
    web admin tool to configure settings for your application. Use
    the Website->Asp.Net Configuration option in Visual Studio.
    A full list of settings and comments can be found in 
    machine.config.comments usually located in 
    \Windows\Microsoft.Net\Framework\v2.x\Config 
-->
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
        <section name="nhibernateSettings" type="ProjectBase.Data.NHibernateSessionMgmt.OpenSessionInViewSection, ProjectBase.Data" />
        <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>
        <add key="NHibernateConfigPath" value="D:\PROJEKTI\WebServices\DotNet\WebServices\WebServices\NHibernate.config" />
    </appSettings>
    <connectionStrings>
        <add name="connectionString" connectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=WebServices;Data Source=.\SQL2008" providerName="System.Data.SqlClient" />
    </connectionStrings>
    <nhibernateSettings>
        <!-- List every session factory that will be needed; transaction management and closing sessions 
          will be managed with the open-session-in-view module -->
        <sessionFactories>
            <clearFactories />
            <sessionFactory name="WebCrawlerFactory" factoryConfigPath="D:\PROJEKTI\WebServices\DotNet\WebServices\WebServices\NHibernate.config" isTransactional="true" />
        </sessionFactories>
    </nhibernateSettings>
    <log4net>
        <appender name="LogAllToFile" type="log4net.Appender.FileAppender">
            <file value="WebCrawler.log" />
            <appendToFile value="false" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%d [%t] %-5l - %m%n%n" />
            </layout>
        </appender>
        <root>
            <priority value="ALL" />
            <!-- ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF-->
            <appender-ref ref="LogAllToFile" />
        </root>
    </log4net>
    <system.web>
        <!--
            Set compilation debug="true" to insert debugging 
            symbols into the compiled page. Because this 
            affects performance, set this value to true only 
            during development.
        -->
        <compilation debug="true">
            <assemblies>
                <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
                <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
            </assemblies>
        </compilation>
        <!--
            The <authentication> section enables configuration 
            of the security authentication mode used by 
            ASP.NET to identify an incoming user. 
        -->
        <authentication mode="Windows" />
        <!--
            The <customErrors> section enables configuration 
            of what to do if/when an unhandled error occurs 
            during the execution of a request. Specifically, 
            it enables developers to configure html error pages 
            to be displayed in place of a error stack trace.

        <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" />
            </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>
    <system.web.extensions>
        <scripting>
            <webServices>
                <!--
              Uncomment this section to enable the authentication service. Include 
              requireSSL="true" if appropriate.

          <authenticationService enabled="true" requireSSL = "true|false"/>
          -->
                <!--
              Uncomment these lines to enable the profile service, and to choose the 
              profile properties that can be retrieved and modified in ASP.NET AJAX 
              applications.

          <profileService enabled="true"
                          readAccessProperties="propertyname1,propertyname2"
                          writeAccessProperties="propertyname1,propertyname2" />
          -->
                <!--
              Uncomment this section to enable the role service.

          <roleService enabled="true"/>
          -->
            </webServices>
            <!--
        <scriptResourceHandler enableCompression="true" enableCaching="true" />
        -->
        </scripting>
    </system.web.extensions>
    <!--
        The system.webServer section is required for running ASP.NET AJAX under Internet
        Information Services 7.0.  It is not necessary for previous version of IIS.
    -->
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules>
            <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.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=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>
    <system.serviceModel>
        <services>
            <service name="WebServices.Service" behaviorConfiguration="WebServices.ServiceBehavior">
                <!-- Service Endpoints -->
                <endpoint address="" binding="wsHttpBinding" contract="WebServices.IService">
                    <!-- 
              Upon deployment, the following identity element should be removed or replaced to reflect the 
              identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
              automatically.
          -->
                    <identity>
                        <dns value="localhost" />
                    </identity>
                </endpoint>
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="WebServices.ServiceBehavior">
                    <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                    <serviceMetadata httpGetEnabled="true" />
                    <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                    <serviceDebug includeExceptionDetailInFaults="false" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
</configuration>

【问题讨论】:

    标签: iis iis-7


    【解决方案1】:

    问题已通过启用 windows 通信基础 -> windows 功能上的 HttpActivation 解决。

    【讨论】:

    • 出于某种原因必须同时进行 3.5 和 4.5 激活。谢谢!
    • 终于!在重新安装了十亿次之后,运行所有 reg 解决方案(aspnet_regiis 和 servicemodelreg)......终于找到了问题。在 Windows 8 中,它位于 Windows 功能 -> .NET Framework 4.5 高级服务 -> WCF 服务 -> HTTP 激活 非常感谢!
    • 仅适用于 Windows 8.1 中的 4 和 4.5 激活 .. 也为我工作。谢谢。
    • +1,我希望我能投票支持这十亿次。谢谢,谢谢。在花了四个小时试图解决这个问题之后,你拯救了我的一天。再次感谢。
    • 正如gasparnagy.com/2014/01/enable-net-4-0-wcf-hosing-in-iis-8 中解释的那样,这应该是答案。谢谢
    【解决方案2】:

    我收到了类似的错误:

    HTTP Error 404.17 - Not Found
    The requested content appears to be script and will not be served by the static file handler.
    

    我在几台机器上尝试了相同的代码。经过一番研发,我终于发现造成这种情况的原因可能是WCF映射没有注册到IIS。

    解决上述错误:

    1. 导航到“C:\Windows\Microsoft.NET\Framework\v3.0\Windows Visual Studio 命令提示符下的“通信基础”
    2. 执行servicemodelreg -i 手动安装映射

    【讨论】:

    • 技术上是 ServiceModelReg.exe -1,谢谢。
    【解决方案3】:

    对于Win7机器,同样的设置可以在控制面板-->程序和功能-->打开或关闭Windows功能

    【讨论】:

      【解决方案4】:

      定义了重复的“system.web.extensions/scripting/scriptResourceHandler”部分

      您的 web.config 中有两个用于 &lt;scriptResourceHandler&gt; 的节点,或者您的 .svc 文件有自己的 web.config 并且在同一个 IIS 应用程序中还有另一个 web.config 定义了 &lt;scriptResourceHandler&gt;。如果这应该是嵌套在另一个 ASP.NET 站点下的自包含站点,则需要通过 IIS 管理工具将其创建为应用程序,但在不知道您的站点/应用程序的结构的情况下,我不能提供更多帮助。

      【讨论】:

      • 我没有 2 个 scriptResourceHandler 也没有 2 个 web.config
      【解决方案5】:

      WCF 映射未向 IIS 注册。

      导航到C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation并执行servicemodelreg -i手动安装它们

      【讨论】:

      • 已接受答案的重复答案,但有用的信息较少。
      【解决方案6】:

      刚刚与部署在 Windows Server 2012 IIS 上的 BizTalk WCF 服务作斗争。在测试完其他所有内容之后,我想到了其他东西,即应用程序池。如果应用程序池设置为经典模式,您需要将 httpHandlers 置于控制之下,需要为您打算使用的所有文件类型定义它们。如果您在集成模式下运行应用程序,IIS 会处理得很好。可能对在谷歌搜索后发现自己在这里的人有好处。 :)

      【讨论】:

        【解决方案7】:

        我整天都在为这个问题苦苦挣扎。在服务器上安装了所有正确的配置内容和相关功能。发现我的应用程序部署在使用 .net clr 运行时的应用程序池中:非托管代码。将其更改为 4.0 并且繁荣工作!

        【讨论】:

          【解决方案8】:

          如果您在 .net v2.0 中运行 32 位应用程序,您应该在 General 部分下将 true Enable 32-bit Application 设置为 True

          【讨论】:

            【解决方案9】:

            我不得不为 svc NET 4.0 手动添加处理程序映射。不知何故,他们已经从 IIS 映射列表中消失了。

            我知道了HERE

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-05-14
              • 2014-04-07
              • 2019-06-17
              • 2017-07-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多