我正在尝试编写小脚本,单个脚本源与不同的数据库进行通信,但数据库名称来自子域名。目前我做了以下测试,遇到了问题而无法自行修复。问题是,当一个用户在他们的浏览器中打开许多子域标签时,90秒或2分钟,第一个请求的响应对另一个所有请求都是相同的响应。
例如网址:
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
首先我打开http://user1.domains.com/subdomaintest.asp然后打开http://user2.domains.com/subdomaintest.asp并获得相同的响应h1text(user1),这是不期望的。它必须将h1text作为user2响应。假设我在2分钟后打开第二个网址,然后回复user2,这没关系。 GUID也是一样,看起来和响应一样。
我想要的是,响应必须始终依赖于子域名,而不是2分钟后。如果这是IIS问题,它是什么,我可以在哪里改变它?还有如何将GUID实现到浏览器选项卡和/或会话?
这是代码:
'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
我在HTTP HEADER上做了很多阅读,并找出了Request.ServerVariables(&#34; SERVER_NAME&#34;)和Request.ServerVariables(&#34; HTTP_HOST&#34;)之间的区别。
response.write Request.ServerVariables("SERVER_NAME")
response.write Request.ServerVariables("HTTP_HOST")
但它没有帮助我。我也尝试过响应cookie,但它是一样的。似乎IIS并不关心我从不同的子域请求2分钟。那是为什么?
关于服务器:IIS10,sessionstate false(我不使用),64位。相关的任何信息,你可以问我。
任何人帮助我,非常感谢你!请帮忙!
答案 0 :(得分:2)
imho你做的几乎一切都正确
但是,我想你的位置很糟糕。您只需要检查具有索引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
%>
答案 1 :(得分:0)
我自己发现了这个问题。
网络服务器是iis 10,它支持通配符出价,我使用了80和443个网站出价,包括通配符子域和实时网站。 all都在一个文件夹中,网站有一个应用程序池和一些其他配置。
问题在于会话。
我阅读了很多文章,寻找解决方案,但没有一个有效。然后我确定这是会话问题,并试图用不同的网站测试。是的,为测试创建了不同的应用程序池和网站。经过测试,一切正常。
问题出在会话中,而不是代码。