ASP.NET应用程序中的WCF服务生成间歇性404错误

时间:2010-08-04 21:17:14

标签: wcf service http-status-code-404 asp.net-3.5

这个问题已经打败了我在谷歌的尝试,所以这里。我们在从WCF服务获取数据时遇到问题(只是查找数据,因此我们为HTTP GET请求启用了它)。每次进入它都将返回404.堆栈跟踪 NOT 似乎在混合中有WCF - StaticFileHandler似乎正在尝试提供它。

我在ASP.NET 3.5 SP1上创建了一个示例WCF服务,并且能够重现该问题。这是我的示例服务 - 此时与库存WCF的唯一区别是AspNetCompatibilityRequirements以及WebScript和HTTP GET的启用:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1 : IService1
{        
    public string DoWork(string param1)
    {
        System.Threading.Thread.Sleep(150);
        return "bar";
    }
}

[ServiceContract]
public interface IService1
{
    [OperationContract]
    [WebGet]
    string DoWork(string param1);
}

服务配置:

  <service name="namespace.Service1">
    <endpoint 
         behaviorConfiguration="WebScriptEnabled" 
         address="http://localhost:2961/svc/Service1.svc" 
         binding="webHttpBinding" 
         contract="namespace.IService1">
    </endpoint>
  </service>

行为配置:

  <behaviors>
    <endpointBehaviors>
      <behavior name="WebScriptEnabled">
        <enableWebScript />
      </behavior>
    </endpointBehaviors>
  </behaviors>

我的节点有aspNetCompatibilityEnabled =“true”&gt ;,但是其他一切都是OOB。我根本没有关于webHttpBinding的自定义。

如果我在VS 2008上使用内置的Web服务器F5并点击URL,那么第一个请求将导致404.如果我继续点击它甚至轻载(7-10个同时请求),我会得到一些404错误。

如果我然后让负载下降到空,并重新运行我的测试,我可以轻松地同时发送50个没有任何错误。

我真正的服务比这复杂得多,但事实上我可以得到一个(几乎)股票样本来表明这种行为,这似乎有可能存在与框架相关的问题。我已启用WCF诊断和跟踪,但日志中没有显示任何内容(这并非意外,因为当404发生时WCF不在堆栈跟踪中)。

我希望我做错了什么并且没有发现框架错误。我的生产环境是IIS6,似乎表现出与我的开发服务器相同的行为。

0 个答案:

没有答案