Remotingobjekter skal sættes ind de rigtige steder i aspx-siden
Jeg har lavet dette remotingeksempel, som virker:using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Collections.Generic;
using System.Text;
namespace EgetRemoting
{
public class SampleObject : MarshalByRefObject
{
public SampleObject()
{
}
public string HelloWorld()
{
return "Hello World!";
}
}
}
namespace RemotingImplementation
{
class SampleServer
{
public static int Main(string[] args)
{
// Create an instance of a channel
TcpChannel channel = new TcpChannel(8080);
ChannelServices.RegisterChannel(channel);
// Register as an available service with the name HelloWorld
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(SampleObject),
"HelloWorld",
WellKnownObjectMode.SingleCall);
System.Console.WriteLine("Press the enter key to exit...");
System.Console.ReadLine();
return 0;
}
}
}
namespace ClientRemoting
{
/// <remarks>
/// Sample client to demonstrate the use of .NET Remoting.
/// </remarks>
public class SampleClient
{
public static int Main(string[] args)
{
// Create a channel for communicating w/ the remote object
// Notice no port is specified on the client
TcpChannel chan = new TcpChannel();
ChannelServices.RegisterChannel(chan);
// Create an instance of the remote object
SampleObject obj = (SampleObject)Activator.GetObject(
typeof(EgetRemoting.SampleObject),
"tcp://localhost:8080/HelloWorld");
// Use the object
if (obj.Equals(null))
{
System.Console.WriteLine("Error: unable to locate server");
}
else
{
Console.WriteLine(obj.HelloWorld());
}
return 0;
}
}
}
Jeg har også lavet en aspx-side med tilhørende database. Aspx-siden foretager nogle kald til databasen igennem codebehind. Netop dette vil jeg gerne lave om, sådan at jeg starter er remoting-server, som jeg så kalder gennem aspx-siden, som får data fra databasen serveret over remoting serveret af serveren.
Aspx-siden ser således ud (selve kaldene er testet):
protected void Button1_Click(object sender, EventArgs e)
{
try
{
TextBox3.Text = server.countOperationnumber(TextBox1.Text.ToString(), TextBox2.Text.ToString(), 1).ToString();
TextBox4.Text = server.countOperationnumber(TextBox1.Text.ToString(), TextBox2.Text.ToString(), 2).ToString();
TextBox5.Text = server.countOperationnumber(TextBox1.Text.ToString(), TextBox2.Text.ToString(), 3).ToString();
TextBox6.Text = server.countOperationnumber(TextBox1.Text.ToString(), TextBox2.Text.ToString(), 4).ToString();
}
catch (Exception ex)
{
System.Diagnostics.Debug.Write("\n*************FEJL:***************\n");
System.Diagnostics.Debug.Write("\n Fejlen er: " + ex.ToString() + "\n");
System.Diagnostics.Debug.Write("\n*********************************\n");
}
}
Databasefilen/kaldet ser således ud:
public int countOperationnumber(string startdato, string slutdato, int OpTypegruppenr)
{
try{
string sqlString = "SELECT Count Operationsstuer.OpTypegruppenr) AS CountOfOperationsnr FROM Operationsstuer HAVING ((Operationsstuer.Operationsdato)>='" + startdato + "' AND (Operationsstuer.Operationsdato)<='" + slutdato + "' AND ((Operationsstuer.OpTypegruppenr)=" + OpTypegruppenr + "))";
OleDbConnection connection1 = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=....mdb");
OleDbCommand command1 = new OleDbCommand(sqlString, connection1);
connection1.Open();
int set1 = (int)command1.ExecuteScalar();
connection1.Close();
return set1;
}
catch (Exception ex)
{
System.Diagnostics.Debug.Write("\n Fejlen er: \n" + ex.ToString() + "\n");
}
return 0;
}
Da alt er gennemtestet hver for sig, burde det vel være forholdsvis nemt og ligetil at sætte det sammen, så det fungerer. Problemet er blot, at jeg har mistet overblikket...og at jeg ikke har så meget erfaring indenfor remoting :-)
Er der nogle, som venligst kan hjælpe mig med at får den opskrevne kode sat rigtigt sammen ?