Эта проблема победила мои попытки в Google, так что здесь идет.У нас возникла проблема с получением данных из службы WCF (просто поиск данных, поэтому мы включили их для запросов HTTP GET).Время от времени он будет возвращать 404. В трассировке стека NOT , кажется, есть WCF в миксе - StaticFileHandler, кажется, пытается его обслужить.
Я создал пример службы WCF в ASP.NET 3.5 с пакетом обновления 1 (SP1) и могу воспроизвести проблему.Это мой пример сервиса - единственными отличиями от стандартного 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">, но в остальном все в значительной степени OOB.У меня вообще нет настроек для webHttpBinding.
Если я F5 на VS 2008 использую встроенный веб-сервер и нажму URL, самый первый запрос приведет к 404. Если я продолжу нажимать на него даже снебольшая нагрузка (7-10 одновременных запросов), я получу несколько ошибок 404.
Если я тогда позволю нагрузке упасть до нуля и перезапущу свой тест, я могу легко перейти к 50 одновременным запросам БЕЗ любых ошибок.
Моя реальная служба - это многоболее сложный, чем этот, но тот факт, что я могу получить (почти) образец запаса, чтобы показать это поведение, вызывает беспокойство, как будто может быть проблема, связанная с платформой.Я включил диагностику и трассировку WCF, но в журналах ничего не отображается (что не удивительно, поскольку WCF отсутствует в трассировке стека при возникновении 404).
Надеюсь, я что-то не так делаю и не обнаружил ошибку фреймворка.Моя производственная среда - IIS6, и, похоже, она работает так же, как и мой сервер разработки.