WCF “The server did not provide a meaningful reply

2019-07-04 04:55发布

问题:

I am out of ideas here, so I'm hoping someone can help. Here is what I've got:

  • A WCF service that only has a basicHttpBinding endpoint.
  • There is only a service interface, all other [DataMember], [FaultContract] are concrete types.
  • When I run it straight from Visual Studio (using WCF Test Client or my custom app) everything works (I send a request and get a response). This usually takes a second or two.
  • I published it to an IIS 6 server.
  • I can successfully open http://server/WebService/WebService.svc?WSDL
  • I can successfully open http://server/WebService/WebService.svc/mex (same output as above)
  • The WCF Test Client and my custom app can successfully add the service reference
  • Whenever I try to call a service method it waits for about 15 seconds and I get the dreaded "no meaningful reply" error.
  • I ran Fiddler and I got a 202 result, which would seem like a success.
  • It's not returning more than 65536 bytes
  • It's returning an array, but it is small
  • I tried remote debugging, but can't get that to work, probably due to a firewall (but port 80 is open, I can get the WSDL)
  • I enabled system.diagnostics, nothing.
  • I have an IErrorHandler which normally logs things, nothing.

Here's the endpoint config:

<endpoint address="" binding="basicHttpBinding" contract="Enterprise.IMyService" bindingNamespace="http://ourdomain.com/MyService/">
  <identity>
    <dns value="localhost" />
  </identity>
</endpoint>

Anything else I can try? It's probably a simple setting somewhere, but I can't figure it out.

Edit:

The raw fiddler response:

HTTP/1.1 202 Accepted
Date: Thu, 15 Apr 2010 19:02:45 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Length: 0

回答1:

I figured it out! It had nothing to do with WCF. When I moved it to the server the database connection string was no longer valid. The error logging (to e-mail) configuration also was no longer valid and was eating the exception. It took 15 seconds to respond because that's how long the SQL server connection took to time out.