Ο λογαριασμός αναζήτησης βασίζεται σε ASP.NET

ψήφοι
5

Ψάχνω στη χρήση ASP.NET για μια νέα υπηρεσία SaaS, αλλά για την αγάπη μου δεν μπορώ να φαίνεται να καταλάβω πώς να το κάνουμε αναζητήσεις λογαριασμό με βάση υποτομείς όπως και οι περισσότερες εφαρμογές SaaS (π.χ. 37Signals) κάνει.

Για παράδειγμα, αν προσφέρω yourname.mysite.com, τότε πώς θα χρησιμοποιήσετε ASP.NET (MVC συγκεκριμένα) για την εξαγωγή του υποτομέα ώστε να μπορώ να φορτώσει το σωστό πρότυπο (εμφανίζει το όνομα της εταιρείας σας και τα παρόμοια); Μπορεί να γίνει με τακτική δρομολόγηση;

Αυτό φαίνεται να είναι ένα κοινό πράγμα στο SaaS, έτσι πρέπει να είναι ένας εύκολος τρόπος για να το κάνετε σε ASP.NET εκεί? Ξέρω ότι υπάρχουν plugins που το κάνει για άλλα πλαίσια, όπως το Ruby on Rails.

Δημοσιεύθηκε 09/12/2008 στις 17:59
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
3

Αυτό λειτουργεί για μένα:

    //--------------------------------------------------------------------------------------------------------------------------
    public string GetSubDomain()
    {
        string SubDomain = "";

        if (Request.Url.HostNameType == UriHostNameType.Dns)
            SubDomain = Regex.Replace(Request.Url.Host, "((.*)(\\..*){2})|(.*)", "$2");
        if (SubDomain.Length == 0)
            SubDomain = "www";
        return SubDomain;
    }

Υποθέτω ότι θα θέλατε να χειριστεί πολλούς λογαριασμούς στην ίδια εφαρμογή web αντί για την κατασκευή χωριστών χώρων χρησιμοποιώντας τα εργαλεία του IIS. Στην εργασία μας, ξεκινήσαμε τη δημιουργία ενός νέου web site για κάθε υποτομέα, αλλά έχουν διαπιστώσει ότι αυτή η προσέγγιση δεν κλιμακώνεται καλά - ειδικά όταν κυκλοφορήσει μια ενημερωμένη έκδοση και στη συνέχεια να τροποποιήσετε δεκάδες sites! Έτσι, εγώ συνιστώ αυτήν την προσέγγιση παρά τις τεχνικές του server προσανατολισμό προτείνεται παραπάνω βασίζονται σε αρκετά χρόνια την αξία της εμπειρίας που κάνει ακριβώς αυτό που προτείνει.

Ο κώδικας παραπάνω μόνο εξασφαλίζει ότι αυτό είναι ένα πλήρως διαμορφωμένο URL (και όχι, ας πούμε, από μια διεύθυνση IP) και επιστρέφει το subdomain. Αυτό λειτούργησε καλά για μας σε ένα περιβάλλον αρκετά μεγάλου όγκου.

Απαντήθηκε 15/12/2008 στις 15:22
πηγή χρήστη

ψήφοι
2

Θα πρέπει να είναι σε θέση να πάρει αυτό επάνω από το ServerVariables συλλογή, αλλά θα πρέπει πρώτα να ρυθμίσετε τις υπηρεσίες IIS και DNS για να λειτουργήσει σωστά. Έτσι, ξέρετε 37Signals ίσως χρησιμοποιούν Apache ή άλλο ανοικτού κώδικα, Unix web server. Σε Apache αυτό αναφέρεται ως VirtualHosting .

Για να το κάνετε αυτό με IIS θα πρέπει να δημιουργήσετε μια νέα καταχώρηση DNS (δημιουργήσετε ένα CNAME yourname.mysite.com να application.mysite.com) για κάθε τομέα που δείχνει την αίτησή σας στο IIS (application.mysite.com).

Στη συνέχεια, να δημιουργήσετε μια καταχώρηση κεφαλίδα κεντρικού υπολογιστή στην εφαρμογή IIS (application.mysite.com) που θα δεχθεί την κεφαλίδα yourname.mysite.com. Οι χρήστες που πράγματι θα χτυπήσει application.mysite, com, αλλά η διεύθυνση είναι το έθιμο subdomain. Στη συνέχεια, έχετε πρόσβαση στη συλλογή ServerVariables να πάρει την τιμή να αποφασίσει σχετικά με το πώς να προσαρμόσετε το χώρο.

Σημείωση: Υπάρχουν πολλές εναλλακτικές υλοποιήσεις θα μπορούσατε να ακολουθήσετε ανάλογα με τις απαιτήσεις.

  • Χειριστείτε την επεξεργασία κεφαλίδα κεντρικού υπολογιστή σε μια εξισορρόπησης φορτίου υλικού (πιο πιθανό 37Signals το κάνετε αυτό, από ό, τι βασίζονται στο web server), και να δημιουργήσετε μια προσαρμοσμένη κεφαλίδα HTTP για να περάσει στην εφαρμογή web.
  • Δημιουργήστε μια νέα εφαρμογή web και την κεφαλίδα κεντρικού υπολογιστή για κάθε εφαρμογή. Αυτό είναι πιθανώς μια αναποτελεσματική εφαρμογή για ένα μεγάλο αριθμό χρηστών, αλλά θα μπορούσε να προσφέρει καλύτερη μόνωση και ασφάλεια για μερικούς ανθρώπους.
Απαντήθηκε 09/12/2008 στις 18:22
πηγή χρήστη

ψήφοι
1

Θα πρέπει να ρυθμίσετε τις παραμέτρους του DNS για την υποστήριξη υποτομείς μπαλαντέρ. Αυτό μπορεί να γίνει με την προσθήκη ενός ρεκόρ Ένας δείχνουν προς τη διεύθυνση IP σας, όπως αυτό:

* A 1.2.3.4

Μόλις γίνει του, ό, τι πληκτρολογείτε πριν το domain σας θα σταλεί στο ριζικό τομέα σας, όπου μπορείτε να πάρετε από τη διάσπαση της μεταβλητής διακομιστή HTTP_HOST, όπως το χρήστη Buggs είπε παραπάνω:

 string user = HttpContext.Request.ServerVariables["HTTP_HOST"].Split(".")

//use the user variable to query the database for specific data

PS. Εάν χρησιμοποιείτε μια κοινή φιλοξενία πρόκειται πιθανώς να πρέπει να με πρόσθετο Μοναδικά IP από αυτούς, δεδομένου ότι είναι υποχρεωτικό για τους τομείς μπαλαντέρ για να εργαστούν. Εάν χρησιμοποιείτε μια αφιερωμένη φιλοξενία έχετε ήδη δική σας IP.

Απαντήθηκε 05/01/2009 στις 23:36
πηγή χρήστη

ψήφοι
0

Ο τρόπος που έχω κάνει είναι με HttpContext.Request.ServerVariables [ «HTTP_HOST»]. Σπλιτ ( «»).

Επιτρέψτε μου να ξέρω αν χρειάζεστε περισσότερη βοήθεια.

Απαντήθηκε 15/12/2008 στις 15:19
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more