powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / вопрос по Net.tcp биндингу
12 сообщений из 12, страница 1 из 1
вопрос по Net.tcp биндингу
    #38141357
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
У меня к вам вопрос.
Написал два WCF сервиса, которые общаются друг сдругом и оба находятся в одном домене на одном серваке.
Если производить обмен по http , то все без проблем работает,

если же использовать
Net.tcp биндинг, то получаю исключение:

"The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state"

В чем может быть баг?

p.s.
да, клиентский вызов при обращении к методу сервиса такой:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public Class1 GetTest(string Date1)
		{
			var result =new Class1();
			try
			{
				DateTime dmoment = Convert.ToDateTime(Date1);
				using (var client = new InternalTestService.TestServiceClient(ENDPOINT_CONFIGURATION_NAME))
				{
					var resultInernal = client.GetInternalTest(username, password, dmoment);  //Это вызов метода сервиса и тут получаем исключение!
					...
				}
			}
			catch (Exception ex)
			{
				result.InitError(ex);
				Log.Error(ex);
			}
			return result;
		}
...
Рейтинг: 0 / 0
вопрос по Net.tcp биндингу
    #38142190
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslash,

конфигурацию сервера и клиента в студию.
...
Рейтинг: 0 / 0
вопрос по Net.tcp биндингу
    #38142375
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan,

Конфиг клиента (он же сервис, который вызывает методы второго сервиса по Net.Tcp)

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
<?xml version="1.0"?>
<configuration>
	<!--Value определяет какой EndPoint использовать для связи с внутренним сервисом-->
	<system.web>
		<compilation debug="true" targetFramework="4.0" />
	</system.web>
	<system.serviceModel>

		<services>
			<service name="mySpaceName.TestServiceClient" behaviorConfiguration="ServiceBehaviour">
				<!-- Service Endpoints -->
				<endpoint address=""  binding="webHttpBinding" contract="mySpaceName.ITestServiceClient" behaviorConfiguration="web">
				</endpoint>
			</service>
		</services>

		<behaviors>
			<serviceBehaviors>
				<behavior name="ServiceBehaviour">
					<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
					<serviceMetadata httpGetEnabled="true"/>

					<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
					<serviceDebug includeExceptionDetailInFaults="false"/>
				</behavior>
			</serviceBehaviors>
			<endpointBehaviors>
				<behavior name="web">
					<webHttp/>
				</behavior>
			</endpointBehaviors>
		</behaviors>

		<bindings>

		<netTcpBinding>
			<binding name="NetTcpBinding_Service" closeTimeout="00:10:00"
				openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
				transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
				hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288"
				maxBufferSize="6553600" maxConnections="10" maxReceivedMessageSize="4194304">
				<readerQuotas maxDepth="32" maxStringContentLength="9830400"
					maxArrayLength="19660800" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
				<reliableSession ordered="true" inactivityTimeout="00:10:00"
					enabled="false" />
				<security mode="None">
					<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
					<message clientCredentialType="Windows" />
				</security>
			</binding>
		</netTcpBinding>
  </bindings>
		<client>
				<!--NetTcp endpoint-->
				<endpoint address="net.tcp://localhost:49588/TestService/TestService.svc"
				binding="netTcpBinding" bindingConfiguration="NetTcpBinding_Service"  contract="InternalTestService.ITestService" name="NetTcpBinding_Service" />
		</client>
		<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
	</system.serviceModel>
	<system.webServer>
		<modules runAllManagedModulesForAllRequests="true"/>
	</system.webServer>
</configuration>



Конфиг сервиса:

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
<?xml version="1.0"?>
<configuration>
	<system.web>
		<compilation debug="true" targetFramework="4.0" />
	</system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

	  <bindings>
		  <netTcpBinding>
			  <binding name="TCPB" portSharingEnabled="true" openTimeout="00:10:00"
                 closeTimeout="00:10:00"
                 sendTimeout="00:10:00"
                 receiveTimeout="00:10:00">
				  <readerQuotas maxDepth="32" maxStringContentLength="409600" maxArrayLength="819200" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
				  <security mode="None">
					  <transport clientCredentialType="Windows"/>
					  <message clientCredentialType="Windows"/>
				  </security>
			  </binding>
		  </netTcpBinding>
	  </bindings>

	  <services>
		  <service name="mySpaceName.ITestService">
			  <endpoint address="wsitem" binding="ws2007HttpBinding" contract="mySpaceName.ITestService" bindingConfiguration="ws2007"/>
			  <endpoint address="wsitem" binding="netTcpBinding" contract="mySpaceName.ITestService" bindingConfiguration="TCPB"/>
		  </service>
	  </services>

    <serviceHostingEnvironment  multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>
...
Рейтинг: 0 / 0
вопрос по Net.tcp биндингу
    #38142895
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslash,

лично меня смущает адрес "сервера",почему он одинаков для 2 разных привязок? Помойму net tcp binding вот так задается:
Код: c#
1.
 <endpoint address="net.tcp://<host>:<port>/MyService" ....
...
Рейтинг: 0 / 0
вопрос по Net.tcp биндингу
    #38142943
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan,

вы конечно правы, про порт я забыл.
Но сейчас пробую выполнить элементарное действие:

Проверил, что в IIS в Advanced Settings для Enabled Protocols пропино http,net.tcp
выполнил на всякий случай [b]iisreset [/b]

теперь из нового пустого проекта пытаюсь добавить ссылку на этот сервис.

Использую такой URL:
net.tcp://localhost:65529/NetTcp_TestService/TestService.svc/tcpTest
и так тоже пробовал
net.tcp://localhost:65529/NetTcp_TestService/TestService.svc

(NetTcp_TestService - это алиас сервиса в IIS)

tcpTest - в URL'е, потому что в сервисе, к которому пытаюсь подключиться есть следующее:

<services>
<service name="...">
<endpoint address=" tcpTest " binding="netTcpBinding" contract="..." bindingConfiguration="TCPB"/>
</service>
</services>


но в итоге получаю сообщение:

" The connection attempt ... TCP error code 10061: No connection could be made because the target machine actively refused it ...
No connection could be made because... try building the solution and adding the service reference again."
...
Рейтинг: 0 / 0
вопрос по Net.tcp биндингу
    #38142969
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslash,

вы же хотите МЕХ получить. Я очень смоневаюсь,что это будет работать через net.Tcp.
Попробуйте вызвать прокси через Channel.
...
Рейтинг: 0 / 0
вопрос по Net.tcp биндингу
    #38143054
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan,

раньше так и делал, надо вспоминать..
Я где-то прочел, что этот способ уступает по быстродействию современныму да и возни с ним конечно больше
...
Рейтинг: 0 / 0
вопрос по Net.tcp биндингу
    #38143061
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslash,

помогу вам:
Код: 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.
34.
35.
36.
37.
38.
39.
40.
 public interface IFactoryWrapper<TChannel> where TChannel : class
    {
        ChannelFactory<TChannel> Factory { get; }
        TResult Execute<TResult>(Func<TChannel, TResult> action);
    }

    public class FactoryWrapper<TChannel> : IFactoryWrapper<TChannel> where TChannel : class
    {
        private readonly ChannelFactory<TChannel> _factory;

        public ChannelFactory<TChannel> Factory
        {
            get { return _factory; }
        }

        public FactoryWrapper(string endPointConfigName)
        {
            _factory = new ChannelFactory<TChannel>(endPointConfigName);
        }

        public TResult Execute<TResult>(Func<TChannel, TResult> action)
        {
            var proxy = default(TChannel);
            TResult result;
            try
            {
                proxy = _factory.CreateChannel();
                ((IClientChannel)proxy).Open();
                result = action(proxy);
                ((IClientChannel)proxy).Close();
            }
            catch (Exception)
            {
                if (proxy != null)
                    ((IClientChannel)proxy).Abort();
                throw;
            }
            return result;
        }
    }
...
Рейтинг: 0 / 0
вопрос по Net.tcp биндингу
    #38143427
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan,

Большое Вам спасибо! использовал Ваш класс и сделал такой вызов:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
		private void button1_Click(object sender, EventArgs e)
		{
			
			//Тут через Http все прекрасно работает
			//var binding = new BasicHttpBinding();
			//var endpoint_ = new EndpointAddress("http://localhost:8011/NetTcp_TestService/TestService.svc");
			//var factoryWrapper = new FactoryWrapper<ServiceReference1.ITestService>(binding, endpoint_);


			//Пробуем через NetTcp
			var NetTcpbinding = new NetTcpBinding();
			var endpoint_NetTcp = new EndpointAddress("net.tcp://localhost:8014/NetTcp_TestService/TestService.svc/tcpTest");
//так тоже пробовал - EndpointAddress("net.tcp://localhost:8014/NetTcp_TestService/TestService.svc");

			var factoryWrapper = new FactoryWrapper<ServiceReference1.ITestService>(NetTcpbinding, endpoint_NetTcp);
			// ...
			var result = factoryWrapper.Execute(proxy => proxy.TestMethod(...));
		}



Результат:
"Could not connect to net.tcp://localhost:8014/... The connection attempt lasted for a time span of ... TCP error code 10061: No connection could be made because the target machine actively refused it "

Теперь мои размышления о том, почему в очередной раз через Net.tcp не работает:


ServiceReference1 - это ссылка на сам сервис в проекте, он был добавлен через http URL
то есть он имеет адрес http://localhost...
Может глупость скажу, но добавить аналогичную ссылку net.tcp://localhost:8014/... у меня не получилось,
поэтому использовал http.
Может ли не работать с net.tcp из-за этого?
...
Рейтинг: 0 / 0
вопрос по Net.tcp биндингу
    #38143442
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslash,

давайте я вам дам просто конфиг моего сервиса, может поможет?
Но хостится он в Вин сервисе, а не ИИС.
Код: 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.
34.
35.
36.
37.
38.
39.
<system.serviceModel>
   <behaviors>
    <serviceBehaviors>
     <behavior name="my">
      <serviceThrottling maxConcurrentCalls="600" />
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true" />
     </behavior>
    </serviceBehaviors>
   </behaviors>
    <services>
      <service behaviorConfiguration="my" name="Service">
        <endpoint address="net.tcp://хост:порт/Service" binding="netTcpBinding"  bindingConfiguration="NewtcpBinding0"
          contract="Esgp.Repository.Contract.IRepositoryService" />
        <endpoint address="/mex"
          binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://хост:порт/Service" />
          </baseAddresses>
        </host>
      </service>
    </services>
   
    <bindings>
      <basicHttpBinding>
        <binding maxBufferSize="16777216" maxBufferPoolSize="134217728"
          maxReceivedMessageSize="16777216">
          <readerQuotas maxStringContentLength="16777216" />
        </binding>
      </basicHttpBinding>
      <netTcpBinding>
        <binding name="NewtcpBinding0">
          <security mode="None" />
        </binding>
      </netTcpBinding>
    </bindings>
	
  </system.serviceModel>
...
Рейтинг: 0 / 0
вопрос по Net.tcp биндингу
    #38143502
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan,

большое Вам спасибо!
решили проблему, помог админ.
как оказалось не была запущена служба

Net.Tcp Listener Adapter
Net.Tcp Port Sharing Service
...
Рейтинг: 0 / 0
вопрос по Net.tcp биндингу
    #38143539
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslash,

да не за что. Заодно узнал про эти службы :)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / вопрос по Net.tcp биндингу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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