日期:2014-05-16  浏览次数:20990 次

令我崩溃的asp问题
我有一应用,本在asp.net下运行正常,后因涉及的信息内容原因要搞成单机版,于是找来一破旧电脑安装windows 2003,遗憾的是原来.net下的东西老出问题:
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. 
在网上翻了无数资料,均以失败而告终。
于是把一些代码改成asp,这回更让我糊涂:

  IF (LEN(Session("UserName"))=0 Or LEN(Session("UserLevel"))=0) THEN
      Response.Write Session("UserName") & " : "
  Response.Write LEN(Session("UserName")) & "<BR>"
  Response.Write Session("UserLevel") & " : "
  Response.Write LEN(Session("UserLevel"))
  'Response.Redirect "../NORIGHT.htm"
  ELSE

明明LEN(Session("UserName"))为3,LEN(Session("UserLevel"))=6 可是就是要THEN之后的代码,而不是ELSE后面的代码!谁能告诉我为啥?
环境为Windows 2003 SP2, .NET 为4.0

------解决方案--------------------
看你的代码,执行ELSE后的代码是对的啊!
------解决方案--------------------
先把Session("UserName")和Session("UserLevel")输出,看一下有没有内容
------解决方案--------------------
你反向尝试下如何
IF (LEN(Session("UserName"))<>0 and LEN(Session("UserLevel"))<>0) THEN

ELSE
     Response.Write Session("UserName") & " : "
     Response.Write LEN(Session("UserName")) & "<BR>"
     Response.Write Session("UserLevel") & " : "
     Response.Write LEN(Session("UserLevel"))
     'Response.Redirect "../NORIGHT.htm"

------解决方案--------------------
Response.Write Session("UserName") & " : "
Response.Write Session("UserLevel") & " : "
把这条语句放在IF前,然后再运行一下,看是不是有值
------解决方案--------------------
这根本不是问题,ASP本身就有时会出问题的.

比如:
if a=3 then
b=5
else
b=6
end if

上面的最简单,但当a=3时,B的结果却是6。所以5楼的可以试一下。
if a<>3 then
b=6
else
b=5
end if
这样写就可以了。没什么,经常的应该知道这类的问题。