Bad*_*pot 3 c# iis wcf iis-7 url-rewriting
我使用的是IIS7.5,.net 4.0.我在当地工作.
我已经安装了Application Request Routing,Web Farm Framework,WebDeploy和UrlRewrite来设置反向代理.这在大多数情况下都可以正常工作.
我有两个网站:
我在DefaultWebSite上有一个重写规则(在IIS.net上按照指示创建),它将所有localhost(端口80)流量重定向到localhost:8085,就像上面链接中详述的那样.这适用于大多数文档类型(.aspx,.xap,.htm,.ico),但对MyService.svc的请求失败.它返回404.
要明确:
当我将localhost:8085/MyService.svc粘贴到浏览器中时,我得到了请求的WCF页面.
当我将localhost/MyService.svc粘贴到浏览器中时,我得到了404.
当我将localhost:8085/MyIcon.ico粘贴到浏览器中时,我获得了所请求的资源.
当我将localhost/MyIcon.ico粘贴到浏览器中时,我获得了所请求的资源.
.svc是我发现的唯一返回404的文档类型.
我有两条可能相关的信息.
应用程序池.当我将DefaultWebSite的应用程序池更改为TargetAppPool时,404变为500("无法映射路径'/'").进行此更改后,所有其他请求都成功.不确定这是否相关.
FREB(失败的请求跟踪)日志.我找到了一个页面(http://blogs.msdn.com/b/asiatech/archive/2011/08/25/return-404-4-not-found-when-url-rewrite.aspx),详细介绍了URL重写比我的更成功时的FREB日志(稍后失败).我无法找到如何为成功重写生成FREB日志(如果可能的话),所以我只能将我的FREB日志与该博客上的日志进行比较.我可以在我的FREB日志中看到他们的第21步(URL_CHANGED)但不是22(URL_REWRITE_END).我没有足够的经验来使用这些日志来注意比这更重要的事情(建议欢迎).
我的主要问题是:有谁知道为什么只是请求.svc资源的URL没有被重写?
第二个问题是:有没有人知道如何为成功请求生成FREB日志(如果可能的话)?
谢谢
更新:
我已经改变了架构以尝试获取更多信息.
我已将Target网站移至另一台PC,我已安装Microsoft网络监视器以捕获传入流量.
在我将url-rewrite规则更改为指向这个新网站之前,当我在新PC上向MyService.svc发出请求时,我收到了正确的响应.精细.
一旦我更改了重写规则以将请求路由到新的Target网站,它就像之前一样响应(404).我已经发出了POST和GET请求.网络监视器日志中没有任何请求的迹象(所有其他呼叫-200,404或其他 - 出现在此日志中).
这让我认为有一些与url-rewrites和*.svc请求不兼容的东西.我尝试向MyService.asmx发出请求(创建了这个文件),并且它正确地返回了一个页面,所以它仅限于*.svc.有任何想法吗?
解决方案是在Target网站的配置文件中.
在web.config中(在Target应用程序中),有一节描述如下:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>.
我改为阅读:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />.
为此必须去http://forums.iis.net/post/1956671.aspx(虽然他/她声称这是需要更改的代理配置,但我发现它是Target应用程序,而不是代理服务器).
小智 7
如果仍然无法运行,请确保网站上没有充当反向代理的 WCF 处理程序。我通过添加反向代理的 web.config 禁用了此功能:
<system. Webserver>
...
<handlers>
<remove name="svc-ISAPI-4.0_64bit" />
<remove name="svc-ISAPI-4.0_32bit" />
<remove name="svc-Integrated-4.0" />
</handlers>
</system.Webserver>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5491 次 |
| 最近记录: |