2016-08-03 3 views
0

J'essaie d'écrire un petit script qui source de script unique communique avec une base de données différente, mais le nom de la base de données provient du nom du sous-domaine. Actuellement, j'ai fait le test ci-dessous et avoir des problèmes et je ne pouvais pas réparer moi-même. le problème est que lorsqu'un utilisateur ouvre plusieurs onglets de sous-domaine dans son navigateur, pendant 90 secondes ou 2 minutes, les réponses de la première requête seront les mêmes pour toutes les autres demandes.Comment trouver un sous-domaine à partir de l'URL actuelle ASP-Classic

par exemple URL:

http://user1.domains.com/subdomaintest.asp

https://user1.domains.com/subdomaintest.asp

http://user2.domains.com/subdomaintest.asp

http://user3.domains.com/subdomaintest.asp

http://user4.domains.com/subdomaintest.asp

http://user5.domains.com/subdomaintest.asp

pour la première j'ouvre http://user1.domains.com/subdomaintest.asp puis ouvrez http://user2.domains.com/subdomaintest.asp et je reçois la même réponse h1text (user1), qui ne devrait pas. il doit répondre h1text en tant qu'utilisateur2. disons si j'ouvre après 2 minutes le second url, puis répond utilisateur2, ce qui est ok. aussi le GUID est le même, semble fonctionner comme les réponses. Ce que je veux, c'est de toujours répondre au nom du sous-domaine, à tout moment, pas après 2 minutes. Si c'est un problème IIS, qu'est-ce que c'est et où je peux le changer? aussi comment implémenter le GUID dans l'onglet et la session du navigateur?

est ici le code:

'ServerName = Request.ServerVariables("HTTP_HOST") 
ServerName = Request.ServerVariables("SERVER_NAME") 
arrSplitted = Split(ServerName, ".") 
SubDomain = arrSplitted(0) 
'response.write(SubDomain) 
response.write "<h1>" & SubDomain & "</h1>" 
Response.Write "<h1>"& CreateGuid() &"</h1>" 
Function CreateGuid() 
    CreateGuid = Mid(CreateObject("Scriptlet.TypeLib").Guid,2,36) 
End Function 

Je l'ai fait beaucoup de lecture sur HTTP et HEADER trouver la différence de Request.ServerVariables ("SERVER_NAME") et Request.ServerVariables ("HTTP_HOST").

response.write Request.ServerVariables("SERVER_NAME") 
response.write Request.ServerVariables("HTTP_HOST") 

mais cela ne m'a pas aidé. J'ai aussi essayé de répondre cookie, mais c'est la même chose. semble que IIS ne se soucie pas je demande de sous-domaine différent pendant 2 minutes. pourquoi donc?

À propos du serveur: IIS10, sessiontate false (je n'utilise pas), 64bit. lié toute information que vous pouvez me demander.

tout corps m'aider, merci beaucoup à l'avance! S'il vous plaît aider!

+0

utilisez-vous une redirection d'URL ou une réécriture d'URL de domaine utilisateur1 à utilisateur2? – Zam

+0

non, pas du tout. – Mem

Répondre

2

IMHO vous avez presque tout droit

mais, je suppose que vous désordre avec la position. vous devez vérifier que le sous-domaine de 1er niveau, qui a l'indice UBound(X) - 1

<% 
    Dim LServerName, LNames, LCycle 
    LServerName = Request.ServerVariables("SERVER_NAME") 

    Response.Write "<br>Full server name: " & LServerName 

    If LServerName <> "" Then 
    LNames = Split(LServerName, ".") 

    For LCycle = LBound(LNames) To UBound(LNames) 
     Response.Write "<br>Level #" & LCycle & ": " & LNames(LCycle) 
    Next 

    Response.Write "<br>UBound: " & UBound(LNames) 

    If UBound(LNames) > 0 Then 
     Response.Write "<br>Top level domain is: " & LNames(UBound(LNames)) 
     Response.Write "<br>1st level subdomain is: " & LNames(UBound(LNames) - 1) 
    End If 

    If UBound(LNames) > 2 Then 
     Response.Write "<br>2nd level subdomain is: " & LNames(UBound(LNames) - 2) 
     Response.Write "<br>3rd level subdomain is: " & LNames(UBound(LNames) - 3) 
    End If 
    End If 
%> 
+0

Merci pour votre réponse. mais c'est le même problème. Je viens de copier collé votre code et rafraîchi tous mes onglets ouverts, le nom du sous-domaine est le même. Je crois aussi que le code, mon code ou votre code n'a aucun problème. mais je ne peux pas trouver quel est le problème. pourquoi iis répond seulement correct répondre à la première demande? – Mem

+0

très étrange. lien vers mon code sur mon serveur domestique: 'http: // 1click.sdk.1click.lv/test.asp' et' http: // x2.sdk.1click.lv/test.asp'. Le même site Web avec quelques noms de liaisons. IIS 7.5 sur 64bit OS – Zam

+0

sont ces 2 liens/fichiers dans le même fichier et répertoire? vraiment très étrange. J'ouvre vos liens à la fois dans les 5 secondes et ils répondent tous les deux correctement. alors pourquoi le mien n'est pas? – Mem

0

J'ai trouvé le problème moi-même.

le serveur Web était iis 10, qui prend en charge les enchères génériques et j'ai utilisé plusieurs offres 80 et 443 sur le site Web, y compris les sous-domaines génériques et le site Web en direct. tout était dans un dossier et le site Web a un pool d'applications et d'autres configurations.

le problème est la session.

tant d'article que j'ai lu, chercher une solution, aucun d'entre eux ne fonctionne. alors j'étais sûr que c'était le problème de session et ai essayé de tester avec le site Web différent. oui, créé un pool d'applications et un site web différents pour le test. testé et tout fonctionne.

le problème était dans la session, pas le code.