C#命中我网站的计数器

时间:2017-03-10 10:43:46

标签: c#

我创建了以下代码

var filename = "wwwroot/Counter/Counter.txt";
var counterStream = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
var reader = new StreamReader(counterStream);
var visits = Convert.ToInt32(reader.ReadLine());
visits = visits + 1;
var writer = new StreamWriter(counterStream);
writer.Write(visits);
counterStream.Dispose();

正如您将意识到的那样,它是我正在建立的网站的点击计数器。我很好,直到排队。

visits = visits + 1

Counter.txt是一个只包含一个数字的文件,上面的代码已经成功读取并更新了它。但是,最后三行不会将任何内容写回文件。我有一半期待它在文件中写一个新行,虽然显然我希望它取代原来的。我不知道为什么它没有写任何东西。请有人指出我正确的方向。

2 个答案:

答案 0 :(得分:0)

提示,您可以使用

using func = std::function<void()>;

func f;
f = [&f]{ int a = 0; f.~func(); std::cout << a; };

非常方便,因为它会自动处理和清理。

这是一个有效的例子,虽然它写了二进制文件

using(FileStream counterStream=new FileStream())
{
}

但是,就像Yeldar所说,由于碰撞,这对于网络服务器来说效果不佳。 另外我认为你的FileShare.None会阻止其他用户打开文件,从而错过点击。

您可以将其放入数据库中,这样可以更轻松。

答案 1 :(得分:0)

我用以下代码解决了我的问题

<a class='test-tooltip' data-placement='top' title="Title" href='#'>Click</a>
<div id="youtube_container" style="display: none">
    <iframe width="853" height="480" src="//www.youtube.com/embed/Q8TXgCzxEnw?rel=0" frameborder="0" allowfullscreen></iframe>
</div>