首页 \ 问答 \ 如何将十六进制字符串转换为十六进制数[复制](How to Convert Hex String to Hex Number [duplicate])

如何将十六进制字符串转换为十六进制数[复制](How to Convert Hex String to Hex Number [duplicate])

可能重复:
如何将十六进制字符串转换为有符号整数?

例如:“3A”转换为0x3A,非常感谢!


Possible Duplicate:
How do I convert hex string into signed integer?

example:"3A" convert to 0x3A,thanks a lot!


原文:https://stackoverflow.com/questions/4275440
更新时间:2023-04-15 20:04

最满意答案

1.首先简要说说asp.net 的session机制,当客户端向服务端发生会话时(不是访问了网站某页面就一定产生了会话),服务端会写一个cookie到客户端,这个cookie保存着sessionid ,名字为“ASP.NET_SessionID” ,在下一次发生向服务端的请求时这个cookie会包含在请求头中,这个cookie仅仅包含了sessionid ,其他信息以(某种形式)保存在服务端并被sessionid标识。  2.因为我们要实现两个域的session共享,我们采用的方式是session的值保存在SqlServer数据库中(至于为什么要保存在SqlServer数据库中,这里不做探讨),如何用数据库保存session的资料可以很轻易的在博客园中找到,子秋的博客中有记  http://www.cnblogs.com/zhangziqiu/archive/2009/03/26/sessionserver.html 3.表ASPStateTempApplications有两个字段 ,一个appid ,一个appname ,一个应用程序相当于一个网站,这个表中的数据会在网站第一次被访问并产生session时添加,一个网站会产生一条记录,ASPStateTempSessions 表才是真正保存会话信息的表,有个二进制数据类型的字段用来保存session数据,还有创建时间过期时间的字段,当然少不了主键标识字段,也就是sessionid, 注意了!这个sessionid 的保存会在真正的sessionid上加个后缀 ,后缀是相应的ASPStateTempSessions表中应用程序id的十六进制表示形式,这样的话,如果两个应用程序不小心产生了同样的sessionid 也不会出现问题,因为还有后缀标识。  4.问题出来了,如果让两个域(既是两个应用程序,两个网站)产生同样的sessionid 并且让应用程序名一样,不就可以共享session了吗?这样一来又有问题了?a.会话sessionid是保存在名字为“ASP.NET_SessionId”的cookie中的,我们知道cookie是不能跨域的,但是我们有方法让他能够夸二级多级域名,注意:主域名还是不能跨的方法就是该cookie的主机名,具体代码如:  HttpCookie co = Request.Cookies["ASP.NET_SessionId"];  co.Domain = ".mysite.com"; Request.Cookies.Set( co );   这一步只让sessionid 一样了呀,还差一步,就是让应用程序名一样  b.如何让应用程序名一样呢 ,我们分析ASPStateTempApplications这张表中的记录是如何的来的,上面也有简单提到,具体分析后,发现记录是通过存储过程TempGetAppID插入的,  我们将其改为:  代码 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[TempGetAppID] @appName tAppName, @appId int OUTPUT AS SET @appName = 'fejerry' -- LOWER(@appName) SET @appId = NULL SELECT @appId = AppId FROM [ASPState].dbo.ASPStateTempApplications WHERE AppName = @appName IF @appId IS NULL BEGIN BEGIN TRAN  SELECT @appId = AppId FROM [ASPState].dbo.ASPStateTempApplications WITH (TABLOCKX) WHERE AppName = @appName  IF @appId IS NULL BEGIN EXEC GetHashCode @appName, @appId OUTPUT  INSERT [ASPState].dbo.ASPStateTempApplications VALUES (@appId, @appName)  IF @@ERROR = 2627  BEGIN DECLARE @dupApp tAppName  SELECT @dupApp = RTRIM(AppName) FROM [ASPState].dbo.ASPStateTempApplications  WHERE AppId = @appId  RAISERROR('SQL session state fatal error: hash-code collision between applications ''%s'' and ''%s''. Please rename the 1st application to resolve the problem.',  18, 1, @appName, @dupApp) END END COMMIT END RETURN 0   给一个固定的应用程序名,不管什么网站,只要以当前SqlServer作为session存储机制,都会记录为同一个应用程序,换句话说,就是表ASPStateTempApplications将只会有一条记录。  5。我这人喜欢钻牛角尖,这条记录是什么时候插入到数据库的呢?于是我手动删除了这条记录,但是即使删除了,仍然不影响应用程序的使用,不影响session的共享,于是我又把应用程序(网站)重启了, 对网站产生第一个会话后,我又去观察表ASPStateTempApplications,奇怪了,仍然一条记录都没有。 于是很自然的我把iis给重启了, 再对网站产生第一个会话后,又去观察表ASPStateTempApplications,出现了,出现了,终于出现了一条新的记录。总结:表ASPStateTempApplications中的记录是在应用程序产生第一个会话时执行存储过程 TempGetAppID产生的,(并且大胆猜测这条记录的信息也保存在iis中,依据是删掉表中记录也无影响)。

其他回答

您好!看了您的代码,注意在此处(我黑色的地方,自己添加yzm.aspx页面)

 protected void page_load(object sender, eventargs e)     {   if(!ispostback)   {         session["code"] = randnum(4);         validatecode(session["code"].tostring(), 50, 25, "黑体", 15, "#f2f2f2");   // (随机数,图片宽,图片高,字体,字号,背景)   }       }

相关问答

更多
  • Session是不可以跨域读取的,建议换成Cookie,二级域名可以读取一级域名的Cookie的
  • 1.首先简要说说asp.net 的session机制,当客户端向服务端发生会话时(不是访问了网站某页面就一定产生了会话),服务端会写一个cookie到客户端,这个cookie保存着sessionid ,名字为“ASP.NET_SessionID” ,在下一次发生向服务端的请求时这个cookie会包含在请求头中,这个cookie仅仅包含了sessionid ,其他信息以(某种形式)保存在服务端并被sessionid标识。 2.因为我们要实现两个域的session共享,我们采用的方式是session的值保存在S ...
  • 不,没有。 问题是跨域的问题,而不是asp.net/classic asp,并且是安全原因。 如果域名是子域名,您可以共享Cookie,前提是您使用了可以访问的cookie路径(即域名sub.example.com您可以使用example.com域名来读取和写入cookie)。 No, there isn't. The issue is the cross domain one, rather than the asp.net/classic asp and is security reasons. If ...
  • 如果您从asp.net传递到asp然后编码您的会话值并在查询字符串的帮助下传递并在页面级别捕获此会话值并使用一些编码和解码方法进行解码。 如果你在session_start方法的global.asax页面中从asp传递到asp.net,你可以使用session cokies来捕获。 就像我给你的一些例子,你可以遵循它 if (null == Request.Cookies["SessionCookie"]) { Session.Abandon(); ...
  • 您可以考虑使用表单身份验证: http : //msdn.microsoft.com/en-us/library/aa480476.aspx You might consider using Forms Authentication: http://msdn.microsoft.com/en-us/library/aa480476.aspx
  • 如果您在ASP.NET中使用默认会话,则它将存储在ASP.NET工作进程中的内存中。 它是一个服务器端缓存,与客户端无关。 还有其他会话存储选项可用,例如专用会话状态机或sql server。 您也可以推出您自己的会话提供程序。 所有在这里解释http://msdn.microsoft.com/en-us/library/ms972429.aspx If you are using the default session in ASP.NET then it is stored in memory insi ...
  • 你所追求的是单一登录。 succsesful登录重定向的机制在web.config中 请参阅http://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx