WCF布署问题1 :HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态

.Net3.5的WCF服务在IIS7中发布后,在IE中访问.svc文件出现以下错误:

HTTP 错误 404.17 - Not Found

请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。

      

 

      后来发现在II7的WCF服务网站中<处理程序映射>中

*.svc文件已经被.Net Framework4.0的处理程序aspnet_isapi.dll接管,看来是由于装了.Net Framework4.0 beta和vs.net 2010 beta2导致的,把原先的3.5给废了.不影响开发,但影响布署
重新指定成.Net2.0中的处理程序aspnet_isapi.dll处理也不行.

最后,干脆来个釜底抽薪吧,重新注册.Net 3.5的WCF

结果,问题解决!<处理程序映射>中.svc也重新被.net 2.0接管

 

详细内容请下载WORD文档(NET3.ZIP)

 

附:相关MIME问题处理

但当我们以这样(http://www.xxx.com/default.aspx)的形式访问时,就没有任何问题了!原因何在呢?

曾经在各大搜索引擎上寻找答案,很遗憾没有一个回答对的,可能是引发此类问题的原因不一样吧!

最终在微软官网中找到了正确答案,有兴趣的朋友可以去官网看看。

这是出现问题时Web.Config的配置

< system.webServer >
    
< modules  runAllManagedModulesForAllRequests ="true"   />
    
< handlers >
      
< add  name ="urlre"  path ="*"  verb ="*"  *****省略*****   />
    
</ handlers >
</ system.webServer >

这是更改后的Web.Config配置

< system.webServer >
    
< modules  runAllManagedModulesForAllRequests ="true"   />
    
< handlers >
      
< add  name ="urlre"  path ="*.aspx"  verb ="*"  *****省略*****  />
    
</ handlers >
</ system.webServer >

就这么一点(path="")小小的改动,问题就解决了。

希望对遇到此类问题的朋友有所帮助,当然可能引发此错误的原因不尽相同,但终会被你解决的,不是吗?

N:如果配置文件里没有该节点,就手动添加该节点。以下是.NET4.0和2.0的相关配置,根据需要添加即可!

 v4

< add  name ="urlre"  path ="*.aspx"  verb ="*"  modules ="IsapiModule"  
scriptProcessor ="c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
 resourceType ="Unspecified"  requireAccess ="None"  
preCondition ="classicMode,runtimeVersionv4.0,bitness32"   />

 v2

< add  name ="PageHandlerFactory-ISAPI-2.0"  path ="*.aspx"  verb ="GET,HEAD,POST,DEBUG"  modules ="IsapiModule"  
scriptProcessor ="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll"
 preCondition ="classicMode,runtimeVersionv2.0,bitness32"  responseBufferLimit ="0"   />

你可能感兴趣的:(Web,搜索引擎,WCF)