刷新页面后会显示旧的CRM数据

时间:2015-04-06 16:27:25

标签: c# .net asp.net-mvc linq dynamics-crm

我正在构建一个简单的ASP.NET MVC网页,其中显示了MS Dynamics CRM的所有有效帐户。

如果我编译并运行(使用F5),基本上页面效果很好。当我转到Microsoft Dynamics CRM网页,登录然后将一个帐户状态从活动更改为非活动时出现问题。现在当我刷新我正在构建的页面时,我得到了相同的旧结果。

我尝试刷新(F5),硬刷新(Ctrl + F5),在返回视图之前处理xrm对象,但没有任何效果。所以我觉得我误解了一些事情。

控制器/ HomeControler.cs

public ActionResult Index()
{
    using (var xrm = new XrmServiceContext("Xrm"))
    {
        var accounts = from a in xrm.AccountSet
                       where a.StateCode == 0
                       select a;

        List<AccountModel> accountModels = new List<AccountModel>();

        foreach (var account in accounts)
        {
            Debug.WriteLine(c+"\t"+account.Id+"\t"+account.Name);
            Debug.WriteLine(account.Address1_Composite);
            accountModels.Add(new AccountModel(
                account.Id.ToString(),
                account.Name,
                account.Address1_Composite));
        }

        ViewBag.Title = "Page Title";
        ViewBag.AccountModels = accountModels;
    }
    return View();
}

查看/主页/ Index.cshtml

@{
    Layout = @"~/Views/Shared/_Layout.cshtml";
}

<div class="table-responsive">
    <table class="table table-bordered table-condensed table-hover">
        <caption><h2>Active Accounts</h2></caption>
        <thead>
            <tr>
                <th>Account ID</th>
                <th>Account Name</th>
                <th>Account Address</th>
            </tr>
        </thead>
        <tbody>
            @{
                foreach (var accountModel in ViewBag.AccountModels)
                {
                    <tr>
                        <td>@accountModel.Id</td>
                        <td>@accountModel.Name</td>
                        <td>@accountModel.Address</td>
                    </tr>
                }
            }
        </tbody>
    </table>
</div>

修改 现在我注意到只有在&#34; Rebuild and Run&#34;实际刷新网站。这个IIS Express(我在本地这样做)是错吗?

1 个答案:

答案 0 :(得分:2)

在web.config中为XRM上下文配置的内容非常重要。默认情况下,使用CachedOrganizationService实例化服务,顾名思义,它会缓存所有数据。

要禁用缓存,请使用以下配置(将Xrm.XrmServiceContext, Xrm替换为您自己的ServiceContext):

<microsoft.xrm.client>
  <contexts>
   <!-- Replace with your actual ServiceContext -->
   <add name="Xrm" type="Xrm.XrmServiceContext, Xrm" serviceName="Xrm" instanceMode="PerRequest"/>
  </contexts>
  <services>
   <!-- Disable cache -->
   <add name="Xrm" type="Microsoft.Xrm.Client.Services.OrganizationService, Microsoft.Xrm.Client"/>
  </services>
</microsoft.xrm.client>

有关默认配置的详细信息,请查看MSDN上的Developer extensions context object model