Click here to Skip to main content
12,079,212 members (47,836 online)
Rate this:
 
Please Sign up or sign in to vote.
See more: C# ASP.NET
Hi,

I need an urgent idea/ how to create sub-domain for each user who is registering in my application..

For eg) I hosted my application in www.xyz.com
If a user with name "bsoft" is registered in my app.
I need to create a site for the user as "bsoft.xyz.com"
In simple words how to rewrite the url for each user??

Please help..
Posted 30-Jan-13 21:38pm
Comments
   
Why? I guess, you have very few customers. But what if you need to scale it up?..
—SA
Edo Tzumer 31-Jan-13 2:49am
   
Say Sergey, if we manage to get the people to ask the question instead of stating the solution they want, would the world be a better place (at least for their customers)?
   
Maybe. At least, we would have a better looking, more useful CodeProject :-)

However, this question is actually not bad; in fact, this is still a real question, while too many inquirer's posts in this forum are not. And you may not see many of those non-questions, because I recently removed a lot of them... :-)

This is becoming a real disaster...

Thank you,
—SA
srimathi89 31-Jan-13 3:25am
   
When will I get a solution???
aspnet_regiis -i 31-Jan-13 4:52am
   
I have seen somebody doing this is asp.net with C#. I dont have any code at the moment. Continue with your research and it can be done. Some references I can provide you

http://stackoverflow.com/questions/6638923/how-to-create-this-type-of-subdomain-on-the-fly-like-blogger-com
Rate this: bad
 
good
Please Sign up or sign in to vote.

Solution 2

Hi
try with below code it may solve your problem

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Administration;
using Microsoft.Web.Administration;
using System.IO;
 

public partial class _Default : System.Web.UI.Page
{
 
    private const string SERVER_IP = "192.168.111.112";// put your ip address
  private const int PORT = 80;
  private const string WEB_DOMAIN_PATH = @"F:\\web\domains\{0}\";
 
    //Live server
    //private const string SERVER_IP = "192.168.111.111";

    protected void Page_Load(object sender, EventArgs e)
    {
   if (!string.IsNullOrEmpty(Request.QueryString["user"]))
   {
 
    try
    {
     string username = Request.QueryString["user"];
     string status = CreateUserSite(username, "codeproject.com");//change your Domain id

     Response.Write(status);
    }
    catch(Exception ex)
    {
     Response.Write(ex.Message); 
    }
   }
   else
   {
    Response.Write("user parameter not supplied"); 
   }
 
   
    }
 

    private string CreateUserSite(string user, string domain)
    {
 

   string path = string.Format(WEB_DOMAIN_PATH, domain);
 
        string userpath = path + user;
 
        string userUrl = user + "." + domain;
 
        using (ServerManager serverManager = new ServerManager())
        {
 
            bool siteExists = false;
            int number = serverManager.Sites.Where(p => p.Name.ToLower().Equals(userUrl.ToLower())).Count();
 
            if (number == 0)
            {
                siteExists = false;
            }
            else
            {
                siteExists = true;
            }
 
            if (!siteExists)
            {
 
                //create user directory
                Directory.CreateDirectory(userpath);
 
                //copy every files from a-base to a new created folder
                FileInfo[] d = new DirectoryInfo(path + @"\a-base").GetFiles();
                foreach (FileInfo fi in d)
                {
                    File.Copy(fi.FullName, userpath + @"\" + fi.Name, true);
                }
 
                //create a directory
                Directory.CreateDirectory(userpath + @"\swfobject");
 
                FileInfo[] d1 = new DirectoryInfo(path + @"\a-base\swfobject").GetFiles();
                foreach (FileInfo fi in d1)
                {
                    File.Copy(fi.FullName, userpath + @"\swfobject\" + fi.Name, true);
                }
 

 
                //create site
                Site mySite = serverManager.Sites.Add(userUrl, path + user, PORT);
                mySite.ServerAutoStart = true;
                mySite.Applications[0].ApplicationPoolName = domain;
 
                //create bindings
                mySite.Bindings.Clear();
                mySite.Bindings.Add(string.Format("{0}:{2}:{1}", SERVER_IP, userUrl, PORT ), "http");
                mySite.Bindings.Add(string.Format("{0}:{2}:www.{1}", SERVER_IP, userUrl, PORT), "http");
 

                Configuration config = serverManager.GetApplicationHostConfiguration();
                ConfigurationSection httpLoggingSection = config.GetSection("system.webServer/httpLogging", userUrl);
                httpLoggingSection["dontLog"] = true;
 
                serverManager.CommitChanges();
 
              //  ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "success", "alert('" + userUrl + " created');", true);

            }
            else
            {
                //ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "error", "alert('user exists. Please use other name');", true);
       throw new Exception("user exists. Please use other name");
      }
 

      return userUrl + " has been successfully created"; 
        }
    }
}
  Permalink  
Comments
DrTJ2066 7-Aug-14 17:59pm
   
Nice approach, but how can I do it in a sharing environment without the access to the configuration file?!
I receive this error:
Filename applicationHost.config Error Cannot write configuration file due to insufficient permissions
heresanjay01 23-Nov-15 0:16am
   
C:\Windows\System32\inetsrv
give full permission to iis user
1-config folder
2-and 3 config file in config folder
Rate this: bad
 
good
Please Sign up or sign in to vote.

Solution 1

Hi srimathi
According to me you have to contact with your Hosting Server Vendor may they will provide you API for this.
  Permalink  
Comments
srimathi89 31-Jan-13 4:09am
   
Hi,
But I host it in my own server.. How could I do it????
Aarti Yadav 20-Mar-15 11:50am
   
is that code working properly ,
Aarti Yadav 13-Apr-15 4:40am
   
have u create url like subdomain for each login..
vivek511 31-Jan-13 4:43am
   
use the above code

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month


Advertise | Privacy | Mobile
Web01 | 2.8.160212.1 | Last Updated 31 Jan 2013
Copyright © CodeProject, 1999-2016
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100