powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF как оболочка для dll
1 сообщений из 1, страница 1 из 1
WCF как оболочка для dll
    #38342940
Lasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача следующая:
надо "вынести" из проекта 32bit dll. Для dll исходного кода нет, изменять невозможно. Полностью обертку писать не надо, используются только два интерфейса, в каждом свои методы. Один интерфейс для connection к базе, другой интерфейс получает данные из базы в разных вариациях.

Написала WCF Service library, точка входа - net.pipe (сервис и клиент будут работать на одной машине). Сервис запускается, но когда пытаюсь выполнить метод (connection) выдает ошибку, что

Код: c#
1.
2.
3.
Failed to invoke the service. Possible causes: The service is offline or inaccessible; the client-side configuration does not match the proxy; the existing proxy is invalid. Refer to the stack trace for more detail. You can try to recover by starting a new proxy, restoring to default configuration, or refreshing the service.
Error Detailes :
Retrieving the COM class factory for component with CLSID {...} failed due to the following error: 80040154 Class not registered.



dll несомненно зарегистрирована, тем более, что в референсах я ее добавляла через вкладку СОМ, да и приложение (.NEt) которое ее сейчас использует, работает без проблем.

В инете нашла решение,что надо добавить эту dll в Component Services/COM+ Application.
Когда добавила, (используя метод активации как Server app) один метод из моего WCF сервиса заработад (connection), но при этом не работает ни один метод из второго интерфейса (те которые получают данные, используя коннекшен из первого интерфейса) - ошибка "not connected database" и во-вторых, перестало работать .Net приложение,пока еще использующее dll (с той же ошибкой).
(зы Если я меняю метод активации на Library app - .Net приложение работает)

Как мне настроить WCF? чтобы он работал с dll безо всяких добавлений в Component Services/COM+ Application? Или может быть надо там что-то изменить в настройках??

Мой код для WCF service:
CROConnection.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
namespace FlocalDamWCF
{
    [DataContract]
    public class CROConnection
    {
        [DataMember]
        public string DatabaseName { get; set; }
        [DataMember]
        public string UserName { get; set; }
        [DataMember]
        public string UserPassword { get; set; }
    }
}


CRORequest.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
namespace FlocalDamWCF
{
    [DataContract]
    public class CRORequest
    {
        [DataMember]
        public DateTime DateFrom { get; set; }
        [DataMember]
        public List<double> Values { get; set; }
    }
}


IFlocalDAMService.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
namespace FlocalDamWCF
{
    [ServiceContract]
    public interface IFlocalDAMService
    {
        [OperationContract]
        int ErrorNumber();
        [OperationContract]
        string ErrorMessage();

        [OperationContract]
        bool ConnectToCRO(CROConnection croConnection);
        [OperationContract]
        bool LoadINFHourlyData(CRORequest croRequest);
    }
}


FlocalDAMService.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
namespace FlocalDamWCF
{
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
    public class FlocalDAMService : IFlocalDAMService
    {
        private CROConnection croConnection = new CROConnection();
        private CRORequest croRequest = new CRORequest();
        private FlocalDAM.clsConnection flocalDamConnection = null;
        private FlocalDAM.clsRequest flocalDamRequest = null;

        public FlocalDAMService()
        {
            flocalDamConnection = new FlocalDAM.clsConnection();

        }
        bool IFlocalDAMService.ConnectToCRO(CROConnection croConnection)
        {
            return ConnectToCRO(croConnection.DatabaseName, croConnection.UserName, croConnection.UserPassword);
        }
        private bool ConnectToCRO(string databaseName, string userName, string userPassword)
        {
            flocalDamConnection.Connect(databaseName, userName, userPassword);
        }
        bool IFlocalDAMService.LoadINFHourlyData(CRORequest croRequest)
        {
            flocalDamRequest = new FlocalDAM.clsRequest();

            isSuccess = flocalDamConnection.Connect(croConnection.DatabaseName, croConnection.UserName, croConnection.UserPassword);

            if (isSuccess)
            {
                flocalDamRequest.SetAssetType(CRO_ASSET_TYPE_RESERVOIR); ...
       }


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<?xml version="1.0"?>
<configuration>
    <system.serviceModel>
        <services>
            <service name="FlocalDamWCF.FlocalDAMService">
                <clear/>
                <endpoint address="net.pipe://localhost/FlocalDam/FlocalDAMService" binding="netNamedPipeBinding" bindingConfiguration="" name="" contract="FlocalDamWCF.IFlocalDAMService"/>
                <host>
                    <baseAddresses>
                        <add baseAddress="http://localhost:8732/Design_Time_Addresses/FlocalDam/FlocalDAMService/"/>
                    </baseAddresses>
                </host>
            </service>
        </services>
      <behaviors>
        <serviceBehaviors>
          <behavior>
            <serviceMetadata httpGetEnabled="True"/>
            <serviceDebug includeExceptionDetailInFaults="True"/>
          </behavior>
        </serviceBehaviors>
      </behaviors>
    </system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF как оболочка для dll
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]