Permission denied: cannot call non-public or static methods rem..
Hejsa,Så er den gal igen :-)
Jeg sidder med noget remoting, der tilsyneladende endelig virker, i hvert fald hvis jeg bare returnerer en streng.
Jeg har en applikation, der er opdelt i 3 lag.
Fra grænsefladen kalder jeg en klasse remote (TestVare):
try
{
ChannelServices.RegisterChannel(new TcpChannel());
Funktionslag.TestVare tv = (TestVare)Activator.GetObject(typeof(TestVare), "tcp://localhost:5000/HentVare", null);
label1.Text = tv.HentVare("Eco");
}
catch(Exception ex)
{
label1.Text = ex.ToString();
}
TestVare-klassen her en metode:
public string HentVare(string varenavn)
{
string response = null;
try
{
//ChannelServices.RegisterChannel(new TcpChannel());
DataAccessLag.DbConnection conn = (DbConnection)Activator.GetObject(typeof(DbConnection), "tcp://localhost:5150/OpenConnection", null);
BdpConnection connection = conn.OpenConnection();
BdpCommand command = new BdpCommand();
command.CommandText = "SELECT Varenavn FROM Varer WHERE Varenavn = '" + varenavn + "'";
command.Connection = connection;
BdpDataReader reader = command.ExecuteReader();
while(reader.Read())
{
response = reader.GetString(0);
}
reader.Close();
command.Dispose();
}
catch(BdpException ex)
{
response = "Der kunne ikke oprettes forbindelse til databasen.";
response += "Følgende fejl opstod:\n";
response += ex.Message;
}
return response;
}
}
Denne klasse henter et connection-objekt fra et andet lag, der står for selve databasen:
public BdpConnection OpenConnection()
{
string dbNavn = "C:\\DolleNet_Remoting\\DataAccessLag\\DolleNet.IB";
string connectionString =
"Provider=interbase;" +
"Assembly=Borland.Data.Interbase,Version=2.0.0.0;" +
"Database=localhost:" + dbNavn + ";" +
"UserName=sysdba;" +
"Password=masterkey";
connection = new BdpConnection(connectionString);
try
{
connection.Open();
}
catch(BdpException ex)
{
throw ex;
}
return connection;
}
Jeg får følgende fejl når jeg kører programmet:
System.Runtime.Remoting.RemotingException: Permission denied: cannot call non-public or static methods remotely.
Det sjove er, at jeg hvis jeg ændrer klassen TestVare, der kaldes fra grænsefladen til, bare at returnere en streng virker det fint og strengen udskrives fint i min label1.
Hvad er det jeg ikke har rettigheder til her?
