Ugyldig URI ved client/server projekt
Hej,Jeg er jo igang med min klient/server projekt, hvor jeg bruger Arnes udvidede eksempel. Nu er jeg stødt ind i et problem, jeg håber en af jer kan hjælpe mig med.
Første gang jeg tilgår et interface på serveren får jeg ingen fejl. Den giver mig hvad jeg vil have (her et navn på en ansat).
Jeg henter navnet således
ChannelServices.RegisterChannel(new TcpClientChannel(), false);
IEmployeeService employees = (IEmployeeService)Activator.GetObject(typeof(IEmployeeService), ServerSettings + "/Employees");
Nu vil jeg så hente navnet igen på en anden knap, og da jeg jo har registreret channel én gang undlader jeg denne og henter bare sådan her:
IEmployeeService employees = (IEmployeeService)Activator.GetObject(typeof(IEmployeeService), ServerSettings + "/Employees");
Nu får jeg så følgende fejlmeddelelse:
{"Ugyldig URI: Der forventedes en port, fordi der er et kolon (':'), men porten kunne ikke parses."}
Det fortæller mig så (har jeg googlet mig frem til), at det har noget at gøre med min ServerSettings (her jeg henter ip adressen og port nr, på den måde Arne har skrevet, det skal skrives:
public string ServerSettings
{
get
{
ClientSettings clientsettings = new ClientSettings();
string serverIp = clientsettings.ServerHost;
string serverPort = clientsettings.ServerPort;
string hostIP = "";
hostIP = "127.0.0.1:50000";
return "tcp://" + hostIP;
}
}
Jeg har googlet mig frem til en metode, jeg skal bruge i stedet (hvor den tester om det er ip4 eller ip6 og den forsøger jeg så at få ind i ovennævnte metode:
public string ServerSettings
{
get
{
ClientSettings clientsettings = new ClientSettings();
string serverIp = clientsettings.ServerHost;
string serverPort = clientsettings.ServerPort;
string hostIP = "";
String strHostName = Dns.GetHostName();
//IPHostEntry ipEntry = Dns.GetHostByAddress(serverIp + ":" + serverPort);
IPHostEntry ipEntry = Dns.GetHostEntry("127.0.0.1:50000");
IPAddress[] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
{
if (addr[i].AddressFamily == AddressFamily.InterNetwork) //it is IPV4
{
hostIP = addr[i].ToString();
break;
}
if (addr[i].AddressFamily == AddressFamily.InterNetworkV6) //it is IPV6
{
hostIP = addr[i].ToString();
break;
}
}
return "tcp://" + hostIP;
}
}
Nu får jeg følgende fejl allerede første gang, jeg forsøger at tilgå den: {"Værten kendes ikke"}
Hvis jeg undlader :50000 (altså port nummeret) får jeg følgende fejl: {"Ugyldig URI: Der forventedes en port, fordi der er et kolon (':'), men porten kunne ikke parses."}
Nogen der ved, hvordan jeg får metoden med ip4/ip6 korrekt ind, så den kommer ud med korrekt ip adresse, så jeg kan tilgå flere metoder end bare én? :-)