我有一个您登录的网页,然后创建一个会话变量,该变量在所有后续页面访问中检查,如果它不存在或与记录的会话ID不匹配,则会被踢出页面.
代码在这里:
Application.cfm会话设置:
<CFAPPLICATION NAME="myAPP" APPLICATIONTIMEOUT="#CREATETIMESPAN(0,0,60,0)#" sessionTimeout=#CreateTimeSpan(0, 0, 20, 0)# sessionManagement="Yes">
Run Code Online (Sandbox Code Playgroud)
检查会话变量集:
<CFLOCK TIMEOUT="30" THROWONTIMEOUT="no" TYPE="Exclusive" Scope="session">
<CFSET session.started = #ucase(dbGUID)#>
</CFLOCK>
Run Code Online (Sandbox Code Playgroud)
现在,该页面还通过JQuery的load()方法每隔几秒将数据加载到不同的DIV中,来自不同的后端页面.对于一些完全没有问题的人来说这一切都很好,但是有些人可以在几分钟到几个小时内完成任何工作,然后突然Lucee会生成一个新的会话,导致数据加载回主页面强制主页刷新,以便您可以重新登录.然而,发生的情况是页面刷新并且原始会话仍然实际存在,因此然后再次使用,然后该人员能够再次看到页面数据.对于某些人而言,这可能会发生很多次,而对于其他人则不会.
我确信这不是个人的,因为在同一个人的不同PC上尝试它对一些人来说是好的,而对其他人则没有.直接在Web服务器上尝试(带有指向本地的域的hosts文件),它没有问题.它似乎不是负载均衡器,因为它在负载均衡器上下都会发生.为了清楚起见,它不是导致新会话的1个特定页面,它可能是任何正在使用的页面,它也不是由于第一次尝试访问页面而导致的,因为它可能在访问之前被访问了几十次正在生成新会话.它也不是超时,因为会话超时设置为20分钟,但它可能在原始会话设置的一分钟内发生.
问题是为什么Lucee突然决定创建一个新会话(旧的会话仍然存在),我怎么能阻止它和/或让它再次使用原始会话返回.
我创建了一个具有各种值的模型但是愚蠢地使用了GUID我的密钥,我正在尝试将其更改为a Int但是当我这样做时会出现错误.
我已经运行了启用迁移命令:
Enable-Migrations -Force -ContextTypeName project.Models.MyContext
Run Code Online (Sandbox Code Playgroud)
这会创建我期望的迁移,但是当我运行时:
Update-Database -Force
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
操作数类型冲突:uniqueidentifier与int不兼容
我不关心数据库中当前包含的数据,因为它刚刚使用SQL Server Express数据库,但我更愿意找到一种方法来迁移它,而不是只需要完全丢弃数据库,最好的是什么这样做的方法?
我已经有了
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
Run Code Online (Sandbox Code Playgroud)
在Global.asax.
我的应用程序中有以下代码从sharepoint列表中提取详细信息.
string siteUrl = "http://SHAREPOINTURL";
ClientContext clientContext = new ClientContext(siteUrl);
clientContext.Credentials = new NetworkCredential("UN", "PW", "DOMAIN");
SP.List oList = clientContext.Web.Lists.GetByTitle("Licences");
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "<Where><Eq><FieldRef Name='Account' /><Value Type='Text'>123456</Value></Eq></Where>";
ListItemCollection collListItem = oList.GetItems(camlQuery);
clientContext.Load(collListItem);
clientContext.ExecuteQuery();
Console.WriteLine("Filtered List: " + collListItem.Count.ToString() + "\n");
foreach (ListItem oListItem in collListItem)
{
Console.WriteLine("Account: {0} \nLicence: {1} \nMAC: {2}\n", oListItem["Account"], oListItem["Licence"], oListItem["MAC"]);
}
Run Code Online (Sandbox Code Playgroud)
在sharepoint列表中,我创建了多个测试项,但每次运行上面的代码时,无论我使用什么用于camlQuery,都会返回列表中的所有项.
任何人都可以让我知道我对C#这个新手的错误,并且在此之前从未触及过sharepoint.
Edit1:根据以下建议更新.
Edit2:简化了代码但仍然遇到了同样的问题.