Брандмауэр блокирует клиент wcf lan - PullRequest
0 голосов
/ 12 августа 2010

Я разместил свою службу Windows WCF в ОС WINDOWS 7 и установил клиентское приложение на ПК с Windows-XP.Брандмауэр WIN-7 блокирует мое клиентское приложение XP. Когда я отключил брандмауэр на Win-7, клиентское приложение работает хорошо.как я могу преодолеть эту проблему.Я использую security mode = "none" для всех клиентских приложений на основе локальной сети.

Файл конфигурации на стороне клиента

<system.serviceModel>
    <bindings>
        <netNamedPipeBinding>
            <binding name="NetNamedPipeBinding_IDataService" >
                <security mode="Transport">
                    <transport protectionLevel="EncryptAndSign" />
                </security>
            </binding>
        </netNamedPipeBinding>
        <netTcpBinding>
            <binding name="NetTcpBinding_IDataService">
                <security mode="None">                        
                </security>
            </binding>
        </netTcpBinding>
    </bindings>
    <client>
        <endpoint address="net.tcp://localhost:8523/DataServices" binding="netTcpBinding"
            bindingConfiguration="NetTcpBinding_IDataService" contract="DataServiceReference.IDataService"
            name="NetTcpBinding_IDataService" />
        <endpoint address="net.pipe://localhost/" binding="netNamedPipeBinding"
            bindingConfiguration="NetNamedPipeBinding_IDataService" contract="DataServiceReference.IDataService"
            name="NetNamedPipeBinding_IDataService">                
        </endpoint>
    </client>
</system.serviceModel>

Ответы [ 3 ]

1 голос
/ 13 апреля 2011

Или вы можете добавить / включить адаптер прослушивания Windows Communication Foundation Net.TCP (TCP-In) в правилах входящих подключений в брандмауэре Windows с повышенной безопасностью

1 голос
/ 03 апреля 2012

Вам не нужно отключать брандмауэр. Ваша конфигурация имеет 2 конечные точки, определенные здесь. Хотя net.tcp будет заблокирован брандмауэром, net.pipe не будет затронут. Поэтому просто используйте конечную точку NetNamedPipeBinding_IDataService в своих клиентах.

Если по какой-то причине это не работает или клиент не находится в том же домене (степень net.pipe), вы можете использовать wsHttpBinding или даже более простой basicHttpBinding. Это будет использовать Http через порт 80, который, скорее всего, открыт, если на вашем сервере установлен IIS.

0 голосов
/ 12 августа 2010

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

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