Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 缓存中存储的数据始终为空_C#_Asp.net_Wcf_Caching_Null - Fatal编程技术网

C# 缓存中存储的数据始终为空

C# 缓存中存储的数据始终为空,c#,asp.net,wcf,caching,null,C#,Asp.net,Wcf,Caching,Null,我在做一个网络项目。我想存储我的数据(来自WCFservice)。然后,当客户机发出请求时,我想检查数据库值是否更改。我通过WCF方法进行检查。当缓存数据中的时间字段不等于来自WCF方法的时间值时,代码应该调用WCF方法从数据库中获取新数据。新数据将存储在缓存中,并显示在页面上 不……:/我运行项目显示我的xxx页面,然后显示另一个页面,然后重新显示我的xxx页面,这是什么!!!我的数据(存储在缓存中)是绝对的,真的,非常空。。。代码就在这里:我真的很高兴听到你对人们的完美建议。为什么它应该为空

我在做一个网络项目。我想存储我的数据(来自WCFservice)。然后,当客户机发出请求时,我想检查数据库值是否更改。我通过WCF方法进行检查。当缓存数据中的时间字段不等于来自WCF方法的时间值时,代码应该调用WCF方法从数据库中获取新数据。新数据将存储在缓存中,并显示在页面上

不……:/我运行项目显示我的xxx页面,然后显示另一个页面,然后重新显示我的xxx页面,这是什么!!!我的数据(存储在缓存中)是绝对的,真的,非常空。。。代码就在这里:我真的很高兴听到你对人们的完美建议。为什么它应该为空,如何从缓存中检索它。第一个方法在wcf中,第二个方法已经是有问题页面的加载

public MeasurementSystemPageWcf GetActiveSystemMeasurementPage(bool RequestOnlyInfo)
{
    Session session = DBUtil.GetSession();
    XPClassInfo MeasurementSystemPageClass = session.GetClassInfo(typeof(MeasurementSystemPage));
    string QCriteria = "ISACTIVE =='true'";
    CriteriaOperator criteria = CriteriaOperator.Parse(QCriteria);
    SortingCollection sortProps = new SortingCollection(null);
    sortProps.Add(new SortProperty("", SortingDirection.Ascending));
    CollectionCriteriaPatcher patcher = new CollectionCriteriaPatcher(false, session.TypesManager);
    ICollection MeasurementSystemPageCollection = session.GetObjects(MeasurementSystemPageClass, criteria, sortProps, 0, patcher, true);
    MeasurementSystemPageWcf RetVal = new MeasurementSystemPageWcf();
    if (MeasurementSystemPageCollection != null && MeasurementSystemPageCollection.Count != 0)
    {
        if (!RequestOnlyInfo)
        {
            foreach (MeasurementSystemPage item in MeasurementSystemPageCollection)
            {
                // sadece bir tane aktif sayfa gelmesi gerektiği varsayılarak kolleksiyondaki ilk sayfa alınacak. break ile sağlanıyor
                RetVal.PAGEHEADER = item.PAGEHEADER;
                RetVal.CONTENT = item.CONTENT;
                RetVal.CREATEDATE = item.CREATEDATE;
                RetVal.EDITDATE = item.EDITDATE;
                break;
            }
        }
        else if (RequestOnlyInfo)
        {
            foreach (MeasurementSystemPage item in MeasurementSystemPageCollection)
            {
                // sadece bir tane aktif sayfa gelmesi gerektiği varsayılarak kolleksiyondaki ilk sayfa alınacak. break ile sağlanıyor
                RetVal.EDITDATE = item.EDITDATE;
                break;
            }
        }
    }
    else
    {
        RetVal.ER.HasError = true;
        RetVal.ER.ErrorMethod = "MeasurementSystemPageWcf GetActiveSetMeasurementPage()";
        RetVal.ER.ErrorMessage = "Henüz İçerik Girilmemiş";
    }
    return RetVal;
}

protected void Page_Load(object sender, EventArgs e)
{
    XSensServiceClient client = new XSensServiceClient();
    MeasurementSystemPageWcf page_in_cache = (MeasurementSystemPageWcf)Cache["MeasurementSystemPage"];
    if (page_in_cache == null)
    {
        MeasurementSystemPageWcf active_page = client.GetActiveSystemMeasurementPage(false);
        if (active_page.ER.HasError)
        {
            lbl_Body.Text = active_page.ER.ErrorMessage;
            Page.Title = active_page.ER.ErrorMessage;
        }
        else
        {
            Cache.Insert("MeasurementSystemPage", active_page, null, DateTime.Now.AddDays(7), TimeSpan.Zero, CacheItemPriority.NotRemovable, null);
            //Cache["MeasurementSystemPage"] = active_page;
            Page.Title = active_page.PAGEHEADER;
            lbl_Body.Text = active_page.CONTENT;
        }
    }
    else
    {
        MeasurementSystemPageWcf active_page_from_wcf = client.GetActiveSystemMeasurementPage(true); // buraya sadece edit zamanını çeken bir method yazılacak, her karşılaştırmada bütün sayfa verisini çekmemek için.
        MeasurementSystemPageWcf active_page_from_cache = (MeasurementSystemPageWcf)Cache["MeasurementSystemPage"];
        if (active_page_from_cache.EDITDATE < active_page_from_wcf.EDITDATE)
        {
            MeasurementSystemPageWcf updated_page = client.GetActiveSystemMeasurementPage(false);
            Cache.Insert("MeasurementSystemPage", updated_page, null, DateTime.Now.AddDays(7), TimeSpan.Zero, CacheItemPriority.NotRemovable, null);
            Page.Title = updated_page.PAGEHEADER;
            lbl_Body.Text = updated_page.CONTENT;
        }
        else
        {
            Page.Title = active_page_from_cache.PAGEHEADER;
            lbl_Body.Text = active_page_from_cache.CONTENT;
        }
    }
public measurementsystemtempagewcf GetActiveSystemMeasurementPage(bool RequestOnlyInfo)
{
Session Session=DBUtil.GetSession();
XPClassInfo measurementsystemtempageclass=session.GetClassInfo(typeof(measurementsystemtempage));
字符串QCriteria=“ISACTIVE=='true'”;
CriteriaOperator criteria=CriteriaOperator.Parse(QCriteria);
SortingCollection sortProps=新的SortingCollection(null);
添加(新的SortProperty(“,SortingDirection.升序));
CollectionCriteriaPatcher patcher=新的CollectionCriteriaPatcher(false,session.TypesManager);
ICollection MeasurementSystemTempageCollection=session.GetObjects(MeasurementSystemTempageClass,criteria,sortProps,0,patcher,true);
MeasurementSystemTempageWCF RetVal=新的MeasurementSystemTempageWCF();
if(measurementsystemmpagecollection!=null&&measurementsystemmpagecollection.Count!=0)
{
如果(!RequestOnlyInfo)
{
foreach(MeasurementSystemTempage集合中的MeasurementSystemTempage项)
{
//Sadeece bir tane aktif sayfa gelmesi gerektiği varsayılarak kolleksiyondaki ilk sayfa alınacak.break ile sağlanıyor
RetVal.PAGEHEADER=item.PAGEHEADER;
RetVal.CONTENT=item.CONTENT;
RetVal.CREATEDATE=item.CREATEDATE;
RetVal.EDITDATE=item.EDITDATE;
打破
}
}
else if(仅请求信息)
{
foreach(MeasurementSystemTempage集合中的MeasurementSystemTempage项)
{
//Sadeece bir tane aktif sayfa gelmesi gerektiği varsayılarak kolleksiyondaki ilk sayfa alınacak.break ile sağlanıyor
RetVal.EDITDATE=item.EDITDATE;
打破
}
}
}
其他的
{
RetVal.ER.HasError=true;
RetVal.ER.ErrorMethod=“MeasurementSystemTempageWCF GetActiveSetMeasurementPage()”;
RetVal.ER.erromessage=“Henüzİerik Girilmemiş”;
}
返回返回;
}
受保护的无效页面加载(对象发送方、事件参数e)
{
XSensServiceClient=新的XSensServiceClient();
MeasurementSystemTempageWCF页面_在_缓存=(MeasurementSystemTempageWCF)缓存[“MeasurementSystemTempage”];
if(缓存中的页面=null)
{
MeasurementSystemTempageWCF active_page=client.GetActiveSystemMeasurementPage(false);
if(活动页面ER.HASRERROR)
{
lbl_Body.Text=活动的_page.ER.ErrorMessage;
Page.Title=active\u Page.ER.ErrorMessage;
}
其他的
{
Cache.Insert(“MeasurementSystemPage”,active_page,null,DateTime.Now.AddDays(7),TimeSpan.Zero,CacheItemPriority.NotRemovable,null);
//缓存[“MeasurementSystemPage”]=活动页面;
Page.Title=active\u Page.PAGEHEADER;
lbl_Body.Text=活动页面内容;
}
}
其他的
{
MeasurementSystemsTempageWCF active_page_from_wcf=client.GetActiveSystemMeasurementPage(true)//buraya sadece编辑zamanınıeken bir方法yazılacak,她的karşlaştırmada bütün sayfa verisiniıekmeek için。
MeasurementSystemTempageWCF活动\u页面\u自\u缓存=(MeasurementSystemTempageWCF)缓存[“MeasurementSystemTempage”];
if(来自缓存.EDITDATE的活动页面<来自wcf.EDITDATE的活动页面)
{
MeasurementSystemTempageWCF updated_page=client.GetActiveSystemMeasurementPage(false);
Insert(“measurementsystemtempage”,updated_page,null,DateTime.Now.AddDays(7),TimeSpan.Zero,CacheItemPriority.NotRemovable,null);
Page.Title=更新的页面页眉;
lbl_Body.Text=更新的_page.CONTENT;
}
其他的
{
Page.Title=来自_cache.PAGEHEADER的活动_页面_;
lbl_Body.Text=活动的_page_from_cache.CONTENT;
}
}
web.config如下所示:

<?xml version="1.0"?>
<configuration>

  <configSections>
    <sectionGroup name="devExpress">
      <section name="themes" type="DevExpress.Web.ASPxClasses.ThemesConfigurationSection, DevExpress.Web.v13.1, Version=13.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false"/>
      <section name="compression" type="DevExpress.Web.ASPxClasses.CompressionConfigurationSection, DevExpress.Web.v13.1, Version=13.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false"/>
      <section name="settings" type="DevExpress.Web.ASPxClasses.SettingsConfigurationSection, DevExpress.Web.v13.1, Version=13.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false"/>
      <section name="errors" type="DevExpress.Web.ASPxClasses.ErrorsConfigurationSection, DevExpress.Web.v13.1, Version=13.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false"/>
    </sectionGroup>
  </configSections>
  <system.web>

    <!--caching nodu sonradan eklendi-->
    <caching>
      <cache disableExpiration="true"/>
    </caching>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="DevExpress.Web.v13.1, Version=13.1.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
        <add assembly="DevExpress.Data.v13.1, Version=13.1.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="DevExpress.RichEdit.v13.1.Core, Version=13.1.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
      </assemblies>
    </compilation>
    <httpModules>
      <add type="DevExpress.Web.ASPxClasses.ASPxHttpHandlerModule, DevExpress.Web.v13.1, Version=13.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule"/>
    </httpModules>
    <httpHandlers>
      <add type="DevExpress.Web.ASPxClasses.ASPxHttpHandlerModule, DevExpress.Web.v13.1, Version=13.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" validate="false"/>
    </httpHandlers>
    <pages>
      <controls>
        <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit"/>
      </controls>
    </pages>
  </system.web>
  <system.webServer>
    <modules>
      <add type="DevExpress.Web.ASPxClasses.ASPxHttpHandlerModule, DevExpress.Web.v13.1, Version=13.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule"/>
    </modules>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
      <add type="DevExpress.Web.ASPxClasses.ASPxHttpHandlerModule, DevExpress.Web.v13.1, Version=13.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" name="ASPxHttpHandlerModule" preCondition="integratedMode"/>
    </handlers>
  </system.webServer>
  <devExpress>
    <themes enableThemesAssembly="true" styleSheetTheme="" theme="" customThemeAssemblies=""/>
    <compression enableHtmlCompression="false" enableCallbackCompression="true" enableResourceCompression="true" enableResourceMerging="true"/>
    <settings rightToLeft="false" doctypeMode="Xhtml"/>
    <errors callbackErrorRedirectUrl=""/>
  </devExpress>
  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="WSHttpBinding_IXSensService"  allowCookies="true" maxReceivedMessageSize="20000000" maxBufferPoolSize="20000000">
          <readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
        </binding>
      </wsHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://127.0.0.1/XSensWCFService/XSENSWCFService.XSensService.svc"
          binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IXSensService"
          contract="XSensService.IXSensService" name="WSHttpBinding_IXSensService">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>
</configuration>

DbUtil.GetSession()看起来像什么?问题可能就在那里。 您没有指定是否使用ASP.NET中的会话状态来保留会话,您还应该发布web.config会话状态设置,以查看它是否正确配置并启用


另外,您是如何在缓存中存储数据的?

我已经编辑了您的标题。请参见“”,其中的共识是“不,他们不应该”。嗨,艾哈迈德,Session Session=DBUtil.GetSession();这一行完全是关于DevExpress XPO(一个ORM库)的。实际上,我不认为这是一件有问题的事情。cache.Insert(“MeasurementSystemPage”,活动页面,null,DateTime.Now.AddDays(7),TimeSpan.Zero,CacheItemPriority.NotRemovable,null);行正在向缓存写入数据我已在您询问hanks时添加了web.config。我的错误-我没有看到