我有一个WCF服务,IIS托管。它受基本身份验证保护。
当我使用浏览器浏览时,我得到401(非挑战)和200(成功回复)。 相同的网站,页面等,通过控制台应用程序的WCF请求,我得到401,然后404(找不到页面)。
两者都使用相同的用户名和密码。该机器只是一个开发桌面。不在域名上。主机是hostwebsite.local,主机文件绑定到127.0.0.1
以下是IIS日志。 前两行是调用失败的WCF。最后两行是成功的浏览器调用。
唯一真正的区别是GET / POST。当身份验证是匿名的时,WCF会起作用。
如何调试此问题?谢谢。
#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2011-03-31 22:53:58
#Fields: date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2011-03-31 22:56:37 W3SVC2 MIKEV-WS 127.0.0.1 POST /Services/EchoService.svc - 80 - 127.0.0.1 HTTP/1.1 - - - hostwebsite.local 401 2 5 6633 362 3
2011-03-31 22:56:37 W3SVC2 MIKEV-WS 127.0.0.1 POST /Services/EchoService.svc - 80 admin 127.0.0.1 HTTP/1.1 - - - hostwebsite.local 404 0 0 210 568 2
2011-03-31 22:57:07 W3SVC2 MIKEV-WS 127.0.0.1 GET /Services/EchoService.svc - 80 - 127.0.0.1 HTTP/1.1 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US)+AppleWebKit/534.16+(KHTML,+like+Gecko)+Chrome/10.0.648.133+Safari/534.16 - - hostwebsite.local 401 2 5 6633 442 1
2011-03-31 22:57:10 W3SVC2 MIKEV-WS 127.0.0.1 GET /Services/EchoService.svc - 80 admin 127.0.0.1 HTTP/1.1 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US)+AppleWebKit/534.16+(KHTML,+like+Gecko)+Chrome/10.0.648.133+Safari/534.16 - - hostwebsite.local 200 0 0 1287 485 23
问题现已解决,我已在下面列出了答案。
答案 0 :(得分:2)
导致侦听服务器侦听http://hostwebsite.local/Services/EchoService.svc/Services/EchoService.svc
而不是
http://hostwebsite.local/Services/EchoService.svc
我清除了服务器端点中的地址/Services/EchoService.svc
<services>
<service name="API.Proxy.EchoProxy" behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint address="[CLEARED]" binding="basicHttpBinding" contract="API.Contract.IEcho" bindingConfiguration="NewBinding" />
客户端配置已经有了地址
<client>
<endpoint address="http://hostwebsite.local/Services/EchoService.svc" binding="basicHttpBinding" bindingConfiguration="SecureBinding" contract="API.Contract.IEcho" name="SecureEndpoint">
答案 1 :(得分:1)
注意你的一个请求......是POST而另一个是GET ......也许这就是问题!