|
Hi, wondering why we need to do "client-activated" mode when we implement events in remoting. Correct me if I'm wrong.
Thanks.
norm
|
|
|
|
|
Hi, I got my client working well using remoting:
ChannelServices.RegisterChannel( new HttpChannel() );
IRemoteObj obj = (IRemoteObj) Activator.GetObject(
typeof(IRemoteObj),
"http://localhost:8085/CRemoteObjURI"
);
Then, I tried to use configuration file on client side, keep getting:
"System.Runtime.Remoting.RemotingException: config file cannot be read successfully due to exception System.Runtime.Remoting.Exception: Unknown attribute Url found on wellknown node"
Here's my config file:
<configuration>
<system.runtime.remoting>
<application name="CRemoteObjClient">
<client>
<wellknown
type="nsCRemoteObj.CRemoteObj, CRemoteObj" Url="tcp://localhost:8086/CRemoteObj"
/>
</client>
<channels>
<channel ref="tcp" displayName="CRemoteObjClient tcp channel" />
</channels>
</application>
</system.runtime.remoting>
</configuration>
I understand the format should be:
<wellknown
type="namespace.class_name, assembly_dll_name" Url="url/uri"
/>
namespace of remote object = nsCRemoteObj
class_name of remote object =CRemoteObj
assembly_dll_name of REMOTE OBJECT dll =CRemoteObj
url by which server publish this remote object = "tcp://localhost:8086"
uri of remote object as speified by server = "CRemoteObjURI" (That's what I specified in server's config file, I also tried substituting "CRemoteObj" here - but same error message...)
I'm confused by uri and url. It seems url is IP address or domain name. URI is "resource id" as specified by server registration - which in this case is "CRemoteObjURI".
Here's my server config:
<configuration>
<system.runtime.remoting>
<application name="CRemoteObjServer">
<service>
<wellknown mode="SingleCall" type="nsCRemoteObj.CRemoteObj, CRemoteObj" objectUri="CRemoteObjURI" />
</service>
<channels>
<channel ref="tcp" port="8086" displayName="CRemoteObjServer tcp channel" />
<channel ref="http" port="8085" displayName="CRemoteObjServer http channel" />
</channels>
</application>
</system.runtime.remoting>
</configuration>
I am having a hard time with this. Help would be greatly appreciated. Thanks!
norm
|
|
|
|
|
In your client config file, try changing Url to url. XML is case sensitive so that might be your entire problem (and why it says it doesn't know what to do with it).
James
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
ooo0... that is it! Thanks a lot James! I wasted 3 hours on it.
norm
|
|
|
|
|
I have a class which has a private member variable named _myObjects of type ArrayList . My question is : How can I separate Add and Enumeration operations for user who uses this class. I want user only be able to iterate through arraylist and not directly adding any item to it. Some idea was of creating a property that casts _myObjects to IList interface like this:
public IList MyObjects{
get{
return _myObjects;
}
}
but IList has both Enumeration and Addition capabilities!
Regardless of this example, I am looking for some general solution.
Any comment is greatly appreciated.
Don't forget, that's Persian Gulf not Arabian gulf!
|
|
|
|
|
I would do this (2) things
either
public IEnumerator MyObjects
{
get
return myList.GetEnumerator();
}
}
or implement the class and only make public the functions you want and make the rest internal or private
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|
|
Good idea, but what about loosing access to Count property?
Don't forget, that's Persian Gulf not Arabian gulf!
|
|
|
|
|
There isnt a Count property in that interface.
if your inheriting just make it internal or private
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|
|
Yes this is what I said! there is no Count property in IEnumerator interface, so we don't have access to Count property when we return IEnumerator .(But we need it!)
Is it possible to cast the return type to more than one interface?(I am almost sure it's not!)
Don't forget, that's Persian Gulf not Arabian gulf!
|
|
|
|
|
Taking the first idea:
public IEnumerator MyObjects
{
get
return myList.GetEnumerator();
}
}
now lets expand on this
public class MyEnumerator : IEnumerable
{
private ArrayList myList;
public MyEnumerator( ArrayList newList )
{
myList = newList;
}
public System.Collections.IEnumerator GetEnumerator ( )
{
return myList.GetEnumerator();
}
public int Count
{
get
{
return myList.Count;
}
}
}
so that includes a count its not part of the object
if you want it to be a self supporting one I would exchange IEnumerable for IEnumerator and implement the 3 methods and properties instead.
nick
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|
|
hey I misunderstood you
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|
|
Now that you understand my question , have you got any solution?
Hugely Thanx
Don't forget, that's Persian Gulf not Arabian gulf!
|
|
|
|
|
I answered it 2 replies ago, or is there still something you need
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|
|
Hi, just wondering, how do you get the current assembly name or file name?
This line retrieved public key token, version and other stuff associated with current assembly:
assem_name = System.AppDomain.CurrentDomain.GetAssemblies().GetValue(0).ToString();
But file name AND assembly name of the assembly would be good.
norm
|
|
|
|
|
This will get you what you want
<br />
System.Reflection.Assembly asd = (System.Reflection.Assembly)System.AppDomain.CurrentDomain.GetAssemblies().GetValue(0);<br />
although it prints out the full name, use a split method to grab the data. the first characters is the name.
codebase property is the file name
although using System.zZReflection.Assembly namespace you can play around
paste that code in your program and put a breakpoint on it. Then run
when it stops click debug->Windows->Local
click the plus sign on asd and EUREKA you can see the whole objerct in action and perform discovery
nick
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|
|
My admin set up terminal services for me but it says Remot desktop connection. Whats the difference between TS and RDS?
I dont trust admins because thier all Citrix happy.
nick
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|
|
I think they are the same thing, just named differently for WinXP. I use RDC to control my Win2K server from my XP Pro laptop.
James
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
Remote Desktop Connection is the name of the client program on Windows XP that enables you to connect to either Terminal Services on Windows 2000/2003 Server, or to another Windows XP desktop (where it's known as Remote Desktop).
The difference is that if you connect to a Windows XP desktop, you're the only user on that desktop. (In other words, a local user, if there was one, is logged out so you can log in.) For Terminal Services on a Windows 2000/2003 Server, you are just another user logged into the system, and you share the server with all the other users who are also logged in.
Cheers, Julian
Program Manager, C#
This posting is provided "AS IS" with no warranties, and confers no rights.
|
|
|
|
|
Am I correct in the conclusion that it's impossible to do:
CDaoDatabase* db=new CDaoDatabase();
db->Create("aNewDatabase");
in C#/.NET???
So I have to write a C++ function that I call from C# to do this???
What idiot decided to remove the ability to programmatically create a database??? Or is there some better way? (Oh, god, don't tell me--COM).
Marc
STL, a liability factory - Anonymously A doable project is one that is small enough to be done quickly and big enough to be interesting - Ken Orr
Latest AAL Article
My blog
|
|
|
|
|
Never mind. Found this in a CACHED(!!!) website (thank goodness for Google's caching--the original link is gone).
In Visual Studio Design Environment
Click on the Project Menu
Click on Add Reference
Click on the COM Tab
Select Microsoft DAO 3.6 Object Library
A reference to DAO will be added to your project
The Data Access Objects Library DAO will be accessible in your project using COM Interop
The namespace DAO will be come visible in your project.
To create a database called database.mdb using Access 2000 DAO and C# use the following line of code :
DAO.DBEngineClass Db = new DAO.DBEngineClass();
Db.CreateDatabase("C:\\bin\\dao\\database.mdb",DAO.LanguageConstants.dbLangGeneral,DAO.DatabaseTypeEnum.dbDecrypt);
All happy now.
Marc
STL, a liability factory - Anonymously A doable project is one that is small enough to be done quickly and big enough to be interesting - Ken Orr
Latest AAL Article
My blog
|
|
|
|
|
Marc Clifton wrote:
Select Microsoft DAO 3.6 Object Library
Eww, DAO, that so old school.
-Nick Parker
|
|
|
|
|
By the way, you may wanna use the @ for literal strings that contain backslashes. Then you don't have to escape them:
Db.CreateDatabase(@"C:\bin\dao\database.mdb", ...);
Regards,
Alvaro
Hey! It compiles! Ship it.
|
|
|
|
|
i have 3 forms and a toolbar with 3 buttons.
Form1, Form2, Form3, tbbForm1, tbbForm2, tbbForm3
i want the toolbar buttons to switch between these 3 forms.
the problem i'm having is that each time i press a button, it opens the form in a new window.
private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button == this.tbbForm1)
{
Form1 frm1 = new Form1();
this.frm1.Show();
}
else if(e.Button == this.tbbForm2)
{
Form2 frm2 = new Form2();
this.frm2.Show();
}
else if(e.Button == this.tbbform3)
{
Form3 frm3 = new Form3();
this.frm3.Show();
}
} [/code]
i know my code calls on a new object each time the button is pressed. i have tried instantiating each of the forms in the constructor so i could just use the Show() method, but this does not work.
please help! =)
|
|
|
|
|
Erm, what happens if you instantiate all three forms, the for each button do something like this:
frm1.Show();
frm2.Hide();
frm3.Hide();
On the other hand, if you're toolbar is doing this, why not instead use a tab control and tab pages?
Marc
STL, a liability factory - Anonymously A doable project is one that is small enough to be done quickly and big enough to be interesting - Ken Orr
Latest AAL Article
My blog
|
|
|
|
|
mikemilano wrote:
i know my code calls on a new object each time the button is pressed. i have tried instantiating each of the forms in the constructor so i could just use the Show() method, but this does not work.
The reason why is you must first define it like so
<br />
public class Form1<br />
{<br />
<br />
private Form2 fm;<br />
<br />
public Form1()<br />
{<br />
fm = new Form2();<br />
}<br />
<br />
public void Button1_Click( object sender, EventArgs e )<br />
{<br />
fm.Show();<br />
}<br />
}<br />
<br />
thats all there is to it
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|