![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вот все говорят Кремль, Кремль C#, C#
но я плачу когда вижу такой код.
идея такая
если кука не установлена, то установить и увеличить счетчик на 1.
< %@ WebHandler Language="C#" Class="SessionCounter" % >
using System.IO;
using System.Web;
using System.Web.SessionState;
public class SessionCounter : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
int sessionCount;
using (FileStream fileStream = new FileStream(context.Server.MapPath("session_count.txt"), FileMode.OpenOrCreate))
{
using (StreamReader streamReader = new StreamReader(fileStream))
{
using (StreamWriter streamWriter = new StreamWriter(fileStream))
{
int.TryParse(streamReader.ReadLine(), out sessionCount);
if (context.Session["been_here_before"] == null || string.IsNullOrEmpty(context.Session["been_here_before"].ToString()))
{
context.Session["been_here_before"] = "Yes";
sessionCount++;
fileStream.Position = 0;
fileStream.SetLength(0);
streamWriter.Write(sessionCount);
}
}
}
}
context.Response.ContentType = "text/plain";
context.Response.Write(sessionCount);
}
public bool IsReusable
{
get
{
return false;
}
}
}
Тада еще проще, в стринице делаешь пропертю:
private int SessionCount
{
int sessionCount;
using (FileStream fileStream = new FileStream(Server.MapPath("session_count.txt"), FileMode.OpenOrCreate))
{
using (StreamReader streamReader = new StreamReader(fileStream))
{
using (StreamWriter streamWriter = new StreamWriter(fileStream))
{
int.TryParse(streamReader.ReadLine(), out sessionCount);
if (Session["been_here_before"] == null || string.IsNullOrEmpty(Session["been_here_before"].ToString()))
{
Session["been_here_before"] = "Yes";
sessionCount++;
fileStream.Position = 0;
fileStream.SetLength(0);
streamWriter.Write(sessionCount);
}
}
}
}
return sessionCount;
{
При загрузке ставишь своему лэйблу значение этой проперти:
labelCount.Text = SessionCount.ToString();
http://community.livejournal.com/ru_csharp/111137.html
но я плачу когда вижу такой код.
идея такая
если кука не установлена, то установить и увеличить счетчик на 1.
< %@ WebHandler Language="C#" Class="SessionCounter" % >
using System.IO;
using System.Web;
using System.Web.SessionState;
public class SessionCounter : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
int sessionCount;
using (FileStream fileStream = new FileStream(context.Server.MapPath("session_count.txt"), FileMode.OpenOrCreate))
{
using (StreamReader streamReader = new StreamReader(fileStream))
{
using (StreamWriter streamWriter = new StreamWriter(fileStream))
{
int.TryParse(streamReader.ReadLine(), out sessionCount);
if (context.Session["been_here_before"] == null || string.IsNullOrEmpty(context.Session["been_here_before"].ToString()))
{
context.Session["been_here_before"] = "Yes";
sessionCount++;
fileStream.Position = 0;
fileStream.SetLength(0);
streamWriter.Write(sessionCount);
}
}
}
}
context.Response.ContentType = "text/plain";
context.Response.Write(sessionCount);
}
public bool IsReusable
{
get
{
return false;
}
}
}
Тада еще проще, в стринице делаешь пропертю:
private int SessionCount
{
int sessionCount;
using (FileStream fileStream = new FileStream(Server.MapPath("session_count.txt"), FileMode.OpenOrCreate))
{
using (StreamReader streamReader = new StreamReader(fileStream))
{
using (StreamWriter streamWriter = new StreamWriter(fileStream))
{
int.TryParse(streamReader.ReadLine(), out sessionCount);
if (Session["been_here_before"] == null || string.IsNullOrEmpty(Session["been_here_before"].ToString()))
{
Session["been_here_before"] = "Yes";
sessionCount++;
fileStream.Position = 0;
fileStream.SetLength(0);
streamWriter.Write(sessionCount);
}
}
}
}
return sessionCount;
{
При загрузке ставишь своему лэйблу значение этой проперти:
labelCount.Text = SessionCount.ToString();
http://community.livejournal.com/ru_csharp/111137.html