Wcf Facility с использованием net.tcp - PullRequest
1 голос
/ 15 мая 2011

Я пытаюсь настроить мои службы WCF для использования net.tcp или netnamedpipes.

вот моя конфигурация контейнера (я закомментировал существующую привязку http):

        var metadata = new ServiceMetadataBehavior
        {
            HttpGetEnabled = true
        };

        var debug = new ServiceDebugBehavior
        {
            IncludeExceptionDetailInFaults = true
        };

        container.AddFacility<WcfFacility>(f => f.Services.AspNetCompatibility =
                                           AspNetCompatibilityRequirementsMode.Required)
            .Install(Configuration.FromAppConfig())
            .Register(
                Component.For<IServiceBehavior>().Instance(metadata),
                Component.For<IServiceBehavior>().Instance(debug),
                Component
                    .For<IAccountService>()
                    .ImplementedBy<AccountService>()
                    .Named("SomeCompany.Services.Account.AccountService")
                    .LifeStyle.Transient
                    .ActAs(new DefaultServiceModel().Hosted().AddEndpoints(
                                   //WcfEndpoint.BoundTo(new BasicHttpBinding { MaxReceivedMessageSize = int.MaxValue }),
                                   //WcfEndpoint.BoundTo(new WSHttpBinding(SecurityMode.None) { MaxReceivedMessageSize = int.MaxValue }).At("ws"),
                                   WcfEndpoint.BoundTo(new NetTcpBinding()).At("net.tcp://localhost/Account") 
                               )),
                Component
                    .For<IAccountNetworkService>()
                    .ImplementedBy<AccountNetworkService>()
                    .Named("SomeCompany.Services.Account.AccountNetworkService")
                    .LifeStyle.Transient
                    .ActAs(new DefaultServiceModel().Hosted()
                               .AddEndpoints(
                                   WcfEndpoint.BoundTo(new BasicHttpBinding { MaxReceivedMessageSize = int.MaxValue }),
                                   WcfEndpoint.BoundTo(new WSHttpBinding(SecurityMode.None) { MaxReceivedMessageSize = int.MaxValue }).At("ws")
                               ))
           );

У моего клиента есть следующее:

<endpoint address="net.tcp://localhost/Account" binding="netTcpBinding" contract="SomeCompany.Services.Account.Contracts.IAccountService" name="accountServiceClient"></endpoint>

Когда я пытаюсьдля доступа к услуге я получаю следующее:

No connection could be made because the target machine actively refused it 127.0.0.1:808

Я также попробовал предложение, размещенное внизу этой вики:

http://docs.castleproject.org/(S(hv034j45ln0cgt2zkpl1nce5))/Windsor.WCF-Facility-Registration.ashx

Я пропалчто-то вопиющее здесь?

1 Ответ

0 голосов
/ 16 мая 2011

Привет, это похоже на проблему с брандмауэром. Нечто подобное произошло со мной, когда брандмауэр Windows запрашивает у меня разрешение для моего приложения, и я нажимаю «Отмена» вместо «ОК». Пожалуйста, попробуйте отключить брандмауэр Windows и проверьте, не произошла ли ошибка.

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

...