Click here to Skip to main content
11,806,026 members (54,878 online)
Rate this: bad
Please Sign up or sign in to vote.
See more: C# ASP.NET

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
If a user with name "bsoft" is registered in my app.
I need to create a site for the user as ""
In simple words how to rewrite the url for each user??

Please help..
Posted 30-Jan-13 20:38pm
Sergey Alexandrovich Kryukov at 31-Jan-13 2:41am
Why? I guess, you have very few customers. But what if you need to scale it up?..
Edo Tzumer at 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)?
Sergey Alexandrovich Kryukov at 31-Jan-13 2:59am
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,
srimathi89 at 31-Jan-13 3:25am
When will I get a solution???
aspnet_regiis -i at 31-Jan-13 4:52am
I have seen somebody doing this is 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
Rate this: bad
Please Sign up or sign in to vote.

Solution 2

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 = "";// 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 = "";

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

    catch(Exception ex)
    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;
                siteExists = true;
            if (!siteExists)
                //create user directory
                //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.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;
              //  ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "success", "alert('" + userUrl + " created');", true);

                //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"; 
DrTJ2066 at 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
Rate this: bad
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.
srimathi89 at 31-Jan-13 4:09am
But I host it in my own server.. How could I do it????
Aarti Yadav at 20-Mar-15 11:50am
is that code working properly ,
Aarti Yadav at 13-Apr-15 4:40am
have u create url like subdomain for each login..
vivek511 at 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
0 Richard Deeming 225
1 OriginalGriff 215
2 Sergey Alexandrovich Kryukov 170
3 ppolymorphe 125
4 Abhinav S 118
0 OriginalGriff 3,300
1 Maciej Los 1,990
2 KrunalRohit 1,907
3 CPallini 1,855
4 Richard MacCutchan 1,227

Advertise | Privacy | Mobile
Web03 | 2.8.151002.1 | Last Updated 31 Jan 2013
Copyright © CodeProject, 1999-2015
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