Проблема доступа к службе данных wcf внутри библиотеки классов, на которую ссылается мое веб-приложение - PullRequest
0 голосов
/ 01 апреля 2019

Ошибка получения ресурса при доступе к облачной службе данных через класс vb.net из моего веб-приложения.

Я написал библиотеку классов vb.net (назовите ее MYAPPIF), ссылающуюся на службу данных wcf с общимифункции, которые работают на них.Например, я хочу сохранить транзакцию, я сделаю это через эту библиотеку классов.Затем на эту библиотеку классов ссылается мое веб-приложение, и с помощью команды «Импорт MYAPPIF» я вижу общие функции и ссылку на облачный сервис.

    dim oMyAppIF = new MyAppIF.class
    dim oCloudContext = oMyAppIF.GetWCFConnection()  ' a function in class
    oQueryList = (From seldata In oCloudContext.vwContractList
                  Order By seldata.cnname
                  Select seldata).ToList()

Веб-сайт компилируется нормально, но когда я его запускаюЯ получаю следующую ошибку:

Описание: необработанное исключение произошло во время выполнения текущего веб-запроса.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Data.Services.Client.DataServiceClientException: ресурс не найден для сегмента 'vwContractList'.

Трассировка стека:

[DataServiceClientException: ресурс не найдендля сегмента vwContractList.] System.Data.Services.Client.QueryResult.ExecuteQuery () +487 System.Data.Services.Client.DataServiceRequest.Execute (контекст DataServiceContext, QueryComponents queryComponents) + 186

1 Ответ

0 голосов
/ 01 апреля 2019

Не вызывайте службу, добавив ссылку на службу в проект библиотеки классов, поскольку библиотека классов будет использовать файл WebConfig текущего проекта Web APP вместо конфигурации библиотеки классов. Вы можете скопировать конфигурацию в разделе servicemodel в текущий проект или использовать вызов фабрики каналов для динамической записи конфигурации.

public string Invocation()
        {
            //ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
            //return client.GetData(34);
            ChannelFactory<IService1> factory = new ChannelFactory<IService1>(new BasicHttpBinding(), new EndpointAddress("http://10.157.18.36:12000/service1.svc"));
            IService1 sv = factory.CreateChannel();
            return sv.GetData(46);
        }

https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-use-the-channelfactory
Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.

...