Błąd Remoting c#

0

Witam, z przesyłaniem danych przez protokół HTTP nie ma kłopotu, lecz teraz chciałem zrobić szyfrowany strumień binarny i niestety otrzymuje błąd :

Kod programu to na razie :
RemotingConfiguration.Configure("konfiguracja.xml", true);

plik konfiguracyjny :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <system.runtime.remoting>
  <application>
    <channels>
      <channel ref = "tcp" port = " 5000 " secure = " true " protectionLevel = " EncryptAndSign ">
        <clientProviders>
          <formatter ref="binary" />
        </clientProviders>
      </channel>
    </channels>
    <service>
      <wellknow mode="Singleton" objectUri="Server" type="Czat.Server, Czat"/>
    </service>
  </application>
 </system.runtime.remoting>
</configuration>

oczywiście posiadam :

using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

oraz własnoręcznie dodają referencje do System.Runtime.Remoting

klasa którą chcę udostępniać nosi nazwę Server w namespace Czat, która jest zapisana w dll

.Config file 'konfiguracja.xml' cannot be read successfully due to exception 'System.Runtime.Remoting.RemotingException: Cannot resolve 'channel' template reference: ' tcp '.
   at System.Runtime.Remoting.Activation.RemotingXmlConfigFileParser.ReportError(String errorStr, RemotingXmlConfigFileData configData)
   at System.Runtime.Remoting.Activation.RemotingXmlConfigFileParser.ReportUnableToResolveTemplateReferenceError(ConfigNode node, String referenceName, RemotingXmlConfigFileData configData)
   at System.Runtime.Remoting.Activation.RemotingXmlConfigFileParser.ProcessChannelsChannelNode(ConfigNode node, RemotingXmlConfigFileData configData, Boolean isTemplate)
   at System.Runtime.Remoting.Activation.RemotingXmlConfigFileParser.ProcessChannelsNode(ConfigNode node, RemotingXmlConfigFileData configData)
   at System.Runtime.Remoting.Activation.RemotingXmlConfigFileParser.ProcessApplicationNode(ConfigNode node, RemotingXmlConfigFileData configData)
   at System.Runtime.Remoting.Activation.RemotingXmlConfigFileParser.ParseConfigNode(ConfigNode rootNode)
   at System.Runtime.Remoting.RemotingConfigHandler.LoadConfigurationFromXmlFile(String filename)'.
0

te spacje " 5000 " czy ' tcp ' wynikaja z wklejenia na forum, czy w komunikatach bledu faktycznie one sa? zwroc uwage ze w channel ref = "tcp" nie ma spacji.. nie pamietam czy czytnik konfiguracji Trim()uje atrybuty, ale mozliwe ze nie i ze po prostu te spacje Ci brużdżą

0

Dzięki wielkie za odpowiedź, zapamiętam to na przyszłość, choć już dawno wszystko wpisałem na sztywno w program servera, zbudowałem klienta, wszystko działa elegancko. Niestety pojawił się inny (drobny? raczej nie bład) mianowicie : Program działa tylko na localhoscie, nie działa niestety na próbie połączenia z innym ip. Od razu mówię, że oboje (z testującym) mamy zewnętrzny ip i odblokowany port 5000

0

raz jeden piszac mala usluge systemowa utrzymujaca dwa proste WS tez mialem podobny problem - klient i serwer lokalnie chodzily, ale po odpaleniu klienta z innego kompa, na tym samym LAN'ie, juz nie laczylo. Nie przytocze Ci roznic w konfiguracji miedzy pierwotnym a dzialajacym, ale chodzilo o to, ze po stronie SERWERA zabraklo czegos w konfiguracji uprawnien: albo chodzilo o to, ze dzialajac lokalnie wcf uzywal sobie namedpipes/sharedmem a zdalnie tcp/ip i to nie byl 'kanal uprawiony/zaufany', albo tez o to, ze lokalnie wcf byl w stanie zautoryzowac klienta a zdalnie nie. Strzelam ze masz problem ten numer dwa. W takim przypadku, musisz jakos sie postarac, aby SERWER byl w stanie dowiedziec sie ze login/credentials/token/jakzwaltakzwal Uzytkownika ktory uruchamia proces kliencki na kompie zdalnym byl rozpoznawalny jako uprawniony przez system serwera. Innymi slowy, program klienta (bedacy dotychczas zalogowany jako komputerdaleko\mojekonto) musi sie tymczasowo zalogowac na jakies konto pochodzace z serwera (serwer5\uzytkownik6 + haslo) albo zalogowac sie do domeny w ktorej jest serwer albo - serwer w konfiguracji WCF czy inszej, musi dozwolic na polaczenia z uzytkownikami spoza domeny/anonimowymi/itd.. wiecej nie pamietam sorry:|
edit: a nie, jeszcze cos - calosc mozna bylo w ogole "zalatwic" poprzez wrzucenie gdzies w konfiguracje wcf ze ten-konkretny-kanal (czy port? endpoint? ech pamięć.. raczej kanał) ktory definiujesz mabyc/mozebyc nie-secure, tzn. ze secure=false, czy requiresecure=false.. to chyba w ogole wylaczalo kontrole uzytkownikow i zezwalalo na anonimowy dostep komukolwiek ---- albo wylaczalo szyfrowanie -- albo oba.. heh. chyba dawno nie uzywalem wcf

1 użytkowników online, w tym zalogowanych: 0, gości: 1