2011-08-16 213 views
36

在VS 2008中,我可以运行.svc但生产IIS 7我不能。我得到这个错误。我正在使用x64获胜。HTTP错误404.17 - 未找到

我跑

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> 

回答

45

我receievd类似的错误:

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

我试了几台机器相同的代码。通过一些R & D,我终于发现原因可能是WCF映射没有在IIS中注册。

为了解决上述错误:

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

There is a duplicate 'system.web.extensions/scripting/scriptResourceHandler' section defined

要么你有<scriptResourceHandler> 2个节点在你的web.config,或您的.svc文件有自己的web.config,并且在同一个IIS应用程序中还有另一个web.config,它定义了<scriptResourceHandler>。如果这应该是一个嵌套在另一个ASP.NET站点下的独立站点,则需要通过IIS管理工具将其创建为应用程序,但不知道您的站点/应用程序的结构如何,我不能提供更多帮助。

+0

我没有2 scriptResourceHandler也不是2 web.config – senzacionale

2

WCF映射未向IIS注册。

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

+3

接受的答案的重复答案,但与有用的信息较少。 –

75

enter image description here问题是通过使Windows通讯基础解决 - > HttpActivation Windows功能。

+4

由于某种原因必须同时执行3.5和4.5激活。谢谢! – kampsj

+3

最后!重新安装10亿次后,运行所有的reg解决方案(aspnet_regiis和servicemodelreg)......终于找到了问题。在Windows 8中,它在Windows功能 - > .NET Framework 4.5高级服务 - > WCF服务 - > HTTP激活非常感谢! – Nullius

+0

+ 1 ..也为我工作。谢谢..!! –

1

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

enter image description here

0

刚刚与一个BizTalk WCF服务争夺部署在Windows Server 2012 IIS上。在测试了其他所有东西之后,还有其他一些想法,应用程序池。如果应用程序池设置为经典模式,则需要将httpHandlers置于“控制”下,需要针对您打算使用的所有文件类型定义它们。如果你在集成模式下运行应用程序,IIS会照顾到这一点。对于在Google搜索后发现自己在这里的人可能会有好处。:)

-1

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

我明白了HERE