HOW TO: Host a Remote Object in Microsoft Internet Information Services (312107)



The information in this article applies to:

  • Microsoft .NET Framework Class Libraries 1.0

This article was previously published under Q312107

SUMMARY

Note The following .NET Framework Class Library namespaces are referenced in this article:

System.Runtime.Remoting

This article provides step-by-step instructions to host a remote object in Microsoft Internet Information Services. The article also provides instructions for how to build a simple client to call the remote object.

Prerequisites:
  • Microsoft Visual Studio .NET with Microsoft .NET Framework
  • Microsoft Internet Information Services (IIS)
back to the top

Build a Simple Remote Object

  1. Using Visual Studio .NET, create a new Visual C# .NET Project by using the Class Library template. Name the project HelloWorldObject.
  2. Rename the Class1.cs file that is created by default to Hello.cs.
  3. Replace the entire code for Hello.cs with the following:
    using System;
    using System.Runtime.Remoting;
    
    namespace HelloWorldObject
    {
    	public class Hello : MarshalByRefObject
    	{
    
    		public string HelloWorld(string str)
    		{
    			return "Hello World received " + str + " from the client";
    		}
    	}
    }
    						
  4. Right-click References in the Solution Explorer, and then select Add Reference. Add a reference to System.Runtime.Remoting.
  5. Build the solution.
back to the top

Host the Remote Object in Microsoft Internet Information Services

  1. Create a new directory called HelloWorldWeb (preferably under \Inetpub\wwwroot\).
  2. Create a directory named bin beneath the HelloWorldWeb directory.
  3. Copy the HelloWorldObject.dll file from the HelloWorldObject\bin\debug\ directory to the HelloWorldWeb\bin\ directory.
  4. Use Notepad.exe to create a new file called Web.config. Copy the following text, and then save it in the HelloWorldWeb directory:
    <configuration>
      <system.runtime.remoting>
        <application>
    
          <service>
            <wellknown mode="SingleCall" type="HelloWorldObject.Hello, HelloWorldObject" objectUri="SimpleHelloWorld.soap" />
          </service>
    
        </application>
      </system.runtime.remoting>
    </configuration>
    						
  5. Click Start, point to Programs, and then click Administrative Tools. Open Internet Services Manager.
  6. Create a virtual directory in IIS.
  7. Make the virtual directory alias SimpleHello, and then set the source directory to the HelloWorldWeb directory.
back to the top

Build a Simple Console Application to Test the Remote Object

  1. Add a new Visual C# .NET project to the existing solution by selecting the Console Application template. Name the project Client.
  2. Rename the existing Class1.cs file to TestClient.cs.
  3. Replace the existing code in TestClient.cs with the following:
    using System;
    using System.Runtime.Remoting;
    using System.Runtime.Remoting.Services;
    using System.Runtime.Remoting.Channels;
    using System.Runtime.Remoting.Channels.Http;
    
    using HelloWorldObject;
    
    namespace Client
    {
    	class TestClient
    	{
    
    		[STAThread]
    		static void Main(string[] args)
    		{
    			HttpChannel http = new HttpChannel();
    			ChannelServices.RegisterChannel(http);
    
    			Hello obj = (Hello)Activator.GetObject(typeof(Hello),"http://localhost/SimpleHello/SimpleHelloWorld.soap");
    			Console.WriteLine(obj.HelloWorld("CLIENT APPLICATION"));
    		}
    	}
    }
    						
  4. Add references to the following:
    • System.Runtime.Remoting
    • HelloWorldObject.dll (by browsing to the location of the .dll file)
  5. Build the client application.
  6. Verify that the IIS server is started, and then run Client.exe, which is located in the debug\bin directory.
back to the top

Modification Type:MajorLast Reviewed:4/17/2003
Keywords:kbfix kbHOWTOmaster KB312107 kbAudDeveloper