Я получил ту же ошибку после обновления mysql.
Ошибка была исправлена после этой команды:
mysql_upgrade -u root
mysql_upgrade должен выполняться каждый раз при обновлении MySQL , Он проверяет все таблицы во всех базах данных на предмет несовместимости с текущей версией MySQL Server. Если найденная таблица имеет возможную несовместимость, она проверяется. Если обнаружены какие-либо проблемы, таблица будет восстановлена. mysql_upgrade также обновляет системные таблицы, чтобы вы могли использовать новые привилегии или возможности, которые могли быть добавлены.
blockquote>
Необходимо реализовать оба сервиса (интерфейсы) в том же классе.
servicehost = new ServiceHost(typeof(WcfEntryPoint));
servicehost.Open();
public class WcfEntryPoint : IMyService1, IMyService2
{
#region IMyService1
#endregion
#region IMyService2
#endregion
}
<час> к вашему сведению: Я часто использую частичные классы, чтобы заставить мой класс хоста кодировать легче читать:
// WcfEntryPoint.IMyService1.cs
public partial class WcfEntryPoint : IMyService1
{
// IMyService1 methods
}
// WcfEntryPoint.IMyService2.cs
public partial class WcfEntryPoint : IMyService2
{
// IMyService2 methods
}
Как насчет того, чтобы разделить его с помощью базового адреса и нескольких услуг / контрактов под ним? Я сейчас не занимаюсь разработкой, но что-то вроде:
http: // myserver / myservices / serviceA
http: // myserver / myservices / serviceB
http: // myserver / myservices / serviceC
Каждая служба реализует свой собственный ServiceContract.
Вы можете изменить
открытый класс WcfEntryPoint: IMyService1, IMyService2
на
открытый частичный класс WcfEntryPoint: IMyService1
открытый частичный класс WcfEntryPoint: 12107Service2 [
В настоящее время я столкнулся с той же проблемой, и решил воспользуйтесь реализацией ниже. Я не уверен, есть ли какие-либо проблемы с производительностью при наличии такого количества контрактов на обслуживание, но в моей окончательной реализации у меня, вероятно, будет около 10-15 контрактов на обслуживание, то есть около 10-15 ServiceHosts.
Я размещаю все свои WCF служб внутри одной службы Windows.
private void PublishWcfEndpoints()
{
var mappings = new Dictionary<Type, Type>
{
{typeof (IAuthenticationService), typeof (AuthenticationService)},
{typeof(IUserService), typeof(UserService)},
{typeof(IClientService), typeof(ClientService)}
};
foreach (var type in mappings)
{
Type contractType = type.Key;
Type implementationType = type.Value;
ServiceHost serviceHost = new ServiceHost(implementationType);
ServiceEndpoint endpoint = serviceHost.AddServiceEndpoint(contractType, ServiceHelper.GetDefaultBinding(),
Properties.Settings.Default.ServiceUrl + "/" + contractType.Name);
endpoint.Behaviors.Add(new ServerSessionBehavior());
ServiceDebugBehavior serviceDebugBehaviour =
serviceHost.Description.Behaviors.Find<ServiceDebugBehavior>();
serviceDebugBehaviour.IncludeExceptionDetailInFaults = true;
log.DebugFormat("Published Service endpoint: {0}", Properties.Settings.Default.ServiceUrl);
serviceHost.Open();
serviceHosts.Add(serviceHost);
}
}
Не стесняйтесь комментировать этот тип настройки, и если есть какие-либо проблемы с ним, особенно связанные с производительностью.
ответ перца чили будет работать, если Вы согласитесь с контрактами, совместно используемыми сервисом. Если Вы хотите, чтобы они были разделены, пробуют это:
host1 = new ServiceHost(typeof(MyService1));
host2 = new ServiceHost(typeof(MyService2));
host1.Open();
host2.Open();
public class MyService1 : IMyService1
{
#region IMyService1
#endregion
}
public class MyService2 : IMyService2
{
#region IMyService2
#endregion
}
Редактирование: Как Матовое отправленный, это потребовало бы нескольких конечных точек для каждого сервиса/контракта
Этот ответ является дальнейшим ответом на комментарий в принятом ответе от chilltemp.
Sam, действительно необходимо определить, почему Вы нуждаетесь в 10-50 контрактах и пытаетесь найти другое решение. Я просмотрел WCF Juval Lowy Кодирование Стандартов (найденный на http://www.idesign.net/ ) и нашел следующие ссылки:
3 Контракта ... 4 на Обслуживание. Избегайте контрактов с одним участником. 5. Стремитесь иметь трех - пять участников на контракт на обслуживание. 6. Не имейте больше чем двадцати участников на контракт на обслуживание. Двенадцать, вероятно, практический предел.
Он не упоминает предел на реализации контракта (что я могу найти), но я не могу вообразить его просматривающий 50 контрактов на сервисе как ничто напоминающее лучшую практику. Одно решение я нашел, что работы хорошо должны использовать участника, совместно использующего для подобных функций.
, Например, при использовании сервиса WCF выполнить математику на 2 значениях у Вас могло бы быть 4 участника на сервисной стороне: Добавьте (x, y), Вычтите (x, y), Умножьтесь (x, y), Разделитесь (x, y). Если Вы комбинируете их в более универсального участника и используете объект передать необходимые данные, можно легко уменьшить членское количество и увеличить масштабируемость. Пример: PeformCalculation (obj), где obj имеет x, y, и действие (добавляют, вычитают, умножаются, делятся), свойства.
Hope это помогает.