Справочник службы Silverlight WCF "Указанный ключ отсутствует в словаре" - PullRequest
2 голосов
/ 01 июня 2011

Вопрос:

У меня есть служба тестирования WCF со ссылкой (.net 3.5) на приложение Silverlight и когда я делаю экземпляр

ServiceReference1.Service1Client client = new Service1Client();

у меня следующая ошибка:

"Указанный ключ отсутствует в словаре."

Служба работает правильно, и в web.config у меня есть что-то вроде этого

<client>
        <endpoint address="http://localhost:49955/Service1.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService1" contract="ServiceReference1.IService1" name="WSHttpBinding_IService1">
            <identity>
                <dns value="localhost" />
            </identity>
        </endpoint>
</client>

В приложении NON silverlight ссылка работает как шарм .... некоторые идеи, как это исправить?

PS: служба является службой по умолчанию:

[ServiceContract]
public interface IService1
{
    [OperationContract]
    void DoWork();
}

public class Service1 : IService1
{
    public void DoWork()
    {
    }
}

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

{System.Collections.Generic.KeyNotFoundException: указанный ключ отсутствует в словаре. в System.ThrowHelper.ThrowKeyNotFoundException () в System.Collections.Generic.Dictionary 2.get_Item(TKey key) at System.ServiceModel.Configuration.ServiceModelSectionGroup.get_Client() at System.ServiceModel.Description.ConfigLoader.LookupChannel(String configurationName, String contractName, Boolean wildcard) at System.ServiceModel.Description.ConfigLoader.LoadChannelBehaviors(ServiceEndpoint serviceEndpoint, String configurationName) at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName) at System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address) at System.ServiceModel.ChannelFactory 1..ctor (String endpointConfigurationName, EndpointAddress remoteAddress) в System.ServiceModel.EndpointTrait 1.CreateSimplexFactory() at System.ServiceModel.EndpointTrait 1.CreateChannelFactory () в System.ServiceModel.ClientBase 1.CreateChannelFactoryRef(EndpointTrait 1 endpointTrait) в System.ServiceModel.ClientBase 1.InitializeChannelFactoryRef() at System.ServiceModel.ClientBase 1..ctor () в SilverlightApplication2.ServiceReference1.Service1Client..ctor () в SilverlightApplication2.MainPage.MainPage_Loaded (Отправитель объекта, RoutedEventArgs e) в MS.Internal.CoreInvokeHandler.InvokeEventHandler (Int32 typeIndex, делегат handlerDelegate, отправитель объекта, аргументы объекта) в MS.Internal.JoltHelper.FireEvent (IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)}

Ответы [ 2 ]

1 голос
/ 01 июня 2011

В файле web.config, где должен быть определен сервис, у вас естьраздел config - это не поможет вам определить клиента из проекта Silverlight.

Вам нужно определение клиента в файле SL ServiceReferences.ClientConfig.

Еще одна вещь, SL не делаетподдерживает WSHttpBinding, поэтому имеющееся у вас определение клиента не будет работать для SL.

Файл ServiceReferences.ClientConfig должен быть создан, когда вы используете Add Service Reference в своем проекте SL для создания ссылки на службу.Если служба использует привязку, которая не поддерживается, инструмент должен выдать ошибку / предупреждение.

0 голосов
/ 30 июня 2013

Я столкнулся с той же проблемой и смог ее решить после того, как потратил 3 дня, это потому, что silverlight для Windows Phone не поддерживает wsHttpBinding, поэтому вы изменили свой сервис на basicHttpBinding и он будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...