【发布时间】:2014-11-17 18:00:05
【问题描述】:
在我作为 Asp.net Mvc 4.5 的项目中,我制作了静态字符串列表。在此列表中添加字符串变量此列表在运行 Visual Studio 时在调试模式下工作,但在发布时不起作用 这是我的代码
当我从不同的浏览器发布和打开这个视图时看到的不是从打开这个视图的其他浏览器插入的数据
ex> 在 chrom 中打开并将 str 变量设置为 1 然后 2 我会在 chrom 1 然后 2 中看到
当获取 url 并在不同的浏览器中重新打开时,如 firefox 看不到 1 , 2 这是我需要看到的
public static class GetOnLineUser
{
public static List<string> NewList;
public static string StaticList(string str)
{
if(NewList==null)
NewList = new List<string>();
var sp = new StringBuilder();
if (!NewList.Contains(str) && !string.IsNullOrEmpty(str))
NewList.Add(str);
if (NewList != null && NewList.Count > 0)
{
foreach (var st in NewList)
{
sp.Append(st);
sp.Append("<br/>");
}
}
return sp.ToString();
}
}
public class TestStController : Controller
{
//
// GET: /TestSt/
public string Index(string str)
{
return GetOnLineUser.StaticList(str);
}
}
【问题讨论】:
-
“但何时使发布不起作用”并没有告诉我们您所看到的任何信息。一方面,您的代码当然不是线程安全的,而且还不清楚您希望它完成什么……但是您在观察什么?这里真正的问题是什么?
-
当我从不同的浏览器发布和打开这个视图时看到的内容没有从打开这个视图的其他浏览器插入数据>当在 chrom 中打开并将 str 变量设置为 1 然后 2 我会看到chrome 1 然后 2 当获取 url 并在不同的浏览器中重新打开时,如 firefox 看不到 1 , 2 这是我需要看到的
-
那么您在 Firefox 中看到了什么做? (顺便说一句,您可能要考虑使用
string.Join...并考虑线程安全...) -
您主要关注线程安全。我需要的所有东西都像存储变量一样 list
在它上面添加值并在不同的浏览器中为所有登录用户获取所有内容 -
您正在编写一个 Web 应用程序。它是自动多线程的。
标签: c# asp.net-mvc-3 asp.net-mvc-4 razor