Может быть миллион причин этого; используйте SQL Profiler и Запрос анализатор для определения , почему запросы становятся медленными перед потерей работоспособности по "дороге" изменения схемы. Не маловероятно, что все, что необходимо сделать, создают несколько индексов и расписания "статистика обновления"......, но как я сказал, Профилировщик и Query Analyzer являются лучшими инструментами для обнаружения, что продолжается...
Я решил это: D
Вот объяснение проблемы:
Первый BAD-код:
namespace WCFServer
{
public class Program : IWCFService
{
private ServiceHost host;
static void Main(string[] args)
{
new Program();
}
public Program()
{
host = new ServiceHost(typeof(Program));
host.Open();
Console.WriteLine("Server Started!");
Console.ReadKey();
}
#region IWCFService Members
public int CheckHealth(int id)
{
return (1);
}
#endregion
}
}
Как вы можете видеть, контракт на обслуживание реализован в классе, в котором размещена служба. Это вызвало всю ошибку (возможно, typeof () запускает конструктор, я не знаю, что я открыт для конструктивного ввода в этом вопросе).
ХОРОШИЙ код:
namespace WCFServer
{
public class Program
{
private ServiceHost host;
static void Main(string[] args)
{
new Program();
}
public Program()
{
host = new ServiceHost(typeof(WCF));
host.Open();
Console.WriteLine("Server Started!");
Console.ReadKey();
}
}
public class WCF : IWCFService
{
#region IWCFService Members
public int CheckHealth(int id)
{
return (1);
}
#endregion
}
}
Контракт на обслуживание для обоих файлов:
[ServiceContract]
public interface IWCFService
{
[OperationContract]
int CheckHealth(int id);
}
App.config
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="WCFBehavior" />
</serviceBehaviors>
</behaviors>
<bindings>
<netTcpBinding>
<binding name="tcpBinding">
<security>
<transport>
<extendedProtectionPolicy policyEnforcement="Never" />
</transport>
</security>
</binding>
</netTcpBinding>
</bindings>
<services>
<service name="WCFServer.WCF">
<endpoint address="net.tcp://localhost:1111/TcpIHostMonitor" binding="netTcpBinding"
bindingConfiguration="tcpBinding" name="netTcpEndpoint" contract="WCFServer.IWCFService" />
</service>
</services>
</system.serviceModel>
может быть, порт уже используется другой программой на вашем компьютере, например, антивирусной программой? Или это зарезервированный порт Windows. Не могли бы вы попробовать установить для порта что-то вроде 11111?
За исключением этого типа, именно внутреннее исключение содержит информацию, полезную для диагностики проблемы. Это довольно общая ошибка, которая может быть вызвана множеством разных вещей.