小编Jun*_*eng的帖子

MVC3 .NET会话随机丢失会话值并返回null

我有In-Proc会话状态的生产问题.

我们的应用程序基于MVC 3 .NET框架,并集成到我们运行Sitecore CMS的站点中.

我们的用户在应用程序流程中随机地经历了"对象引用未设置为对象的实例".

在广泛的日志记录和跟踪之后,我们可以得出结论,这是在会话对象返回null时引起的.

这是关于我们发现的和我们所知道的一些细节.

  1. 会话ID对于同一用户是持久的,并且正确地一直传递到应用程序中.
  2. 我不相信这是一个代码问题,因为这只会在随机间隔的生产中发生,永远不会发生在本地,开发或登台环境中.
  3. 有两个生产服务器通过负载均衡器运行.
  4. 不是服务器持久性问题,因为我们通过睡眠其中一个服务器并将所有流量路由到一个服务器进行测试.此外,通过日志记录,我们可以识别出用户正在访问同一服务器,但会话已变为空.
  5. 这似乎也不是客户端问题,因为即使他们之前遇到过错误,他们也能成功通过应用程序.
  6. 这似乎不是流量负载或服务器负载问题,因为它发生在一天中的随机时间,并发生在随机用户期间.
  7. 这似乎不是由回收应用程序池引起的.
  8. 这似乎不是由会话超时引起的,因为我们已将超时设置为两小时,当我们跟踪日志时,用户可以在流程中经历这5-10分钟.

附注:由于我们的Sitecore CMS,我们必须使用In-Proc会话状态.因此,改变设计不是一种选择.

我有一个理论,它可能与会话锁定或从并发访问尝试损坏.

在我们的应用程序中,我们看到很多地方出现了这个问题,当用户被javascript(windows.location)重定向时.

并且在正在进行异步ajax调用的区域中.

我们一直在摸不着头脑,我想知道是否有人会对这个问题有什么见解或理论?

谢谢

添加注意:

@Mystere && @ H27Studio,所以我也发现了一些与sessionID或会话重置问题有关的内容.在某些情况下,我们发现在页面重定向上它会触发对方法的两次重复GETS调用,第一次调用缺少一个sessionID并随机地重定向到一个服务器(这是因为来自负载均衡器的服务器持久会话是基于客户端IP,sessionID和其他头信息创建唯一会话以将客户端保留在一个服务器上).当我们的重定向页面使用window.location时,每次在流程中都会发生这种情况.

如果bad,no sessionID调用命中同一服务器,这将导致客户端出现"Object reference not set .."问题.(这可能是因为没有sessionID的第一个错误调用导致应用程序创建一个覆盖原始会话对象的新会话)所以即使在正确的sessionID传递到应用程序的第二次调用中,我们也会发现会话对象包含null .

因此,我认为重复调用存在问题,即清除会话对象,这不确定导致开始的原因或原因.

任何人都有这方面的线索?谢谢

更新: 我们计划采取这些措施以解决此问题.

  1. 我们在进行异步Ajax调用的领域存在问题,因此我们计划删除异步功能并让Ajax同步运行.
  2. 我们遇到了发生Windows.location javascript重定向的问题.我们已经创建了一种使用回发的替代方法,希望能够解决这个问题.
  3. 其他与上述问题无关的领域仍悬而未决.

一旦我们将其部署到生产中,就会发布更改的效果.

感谢所有的评论.

.net session sitecore inproc asp.net-mvc-3

7
推荐指数
1
解决办法
4805
查看次数

使用Spring .NET将依赖注入MVC​​控制器

控制器中的对象不会在运行时注入.

Web.config文件:

    <sectionGroup name="spring">
        <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core" />
        <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    </sectionGroup>
Run Code Online (Sandbox Code Playgroud)

...

<!-- Spring Context Configuration -->
<spring>
    <context>
        <resource uri="config://spring/objects"/>
    </context>
    <objects configSource="App_Config\Spring.config" />
</spring>
<!-- End Spring Context Configuration -->
Run Code Online (Sandbox Code Playgroud)

Spring.config:

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">

    <!-- Crest is the WCF service to be exposed to the client, could not use a singleton -->

    <object id="TestController" type="Project.Controllers.TestController, Project" singleton="false">
        <property name="ObjectA" ref="ObjectImpl"/>
    </object>

    <object id="ObjectImpl" type="Project.Code.Implementations.ClassA, Project" singleton="false" />

</objects>
Run Code Online (Sandbox Code Playgroud)

的TestController:

public class …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc dependency-injection spring.net

5
推荐指数
1
解决办法
4162
查看次数

服务器标签格式不正确,ASP Repeater Datasource

我一直在用消息得到解析器错误服务器标签没有很好地形成以下行.

                    <asp:Repeater runat="server" DataSource="<%# ((MultilistField)((Item)Container.DataItem).Fields["Tags"]).GetItems() %>">
                    <ItemTemplate>
                        <sc:FieldRenderer ID="FieldRenderer1" runat="server" FieldName="Tag name" Item="<%# Container.DataItem %>"/>
                    </ItemTemplate>
                    <SeparatorTemplate>
                        /
                    </SeparatorTemplate>
                </asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

语法看起来很好,但我不确定的一件事是你是否可以在那里使用".Field ["tags"]元素.

我试过查找它,但找不到类似的问题.我希望有人能为我解释为什么解析器抱怨这一行.

谢谢

asp.net

4
推荐指数
1
解决办法
6021
查看次数

Solr 无模式模式将字段创建为多值

我在无模式模式下使用 Solr 6.1。创建集合并索引示例数据后,创建的字段都设置为 MultiValued = true,唯一的 id 除外。

问题是使用 SolrNet 查询此数据时,它不会将结果正确映射到模型。查询结果作为数组返回,并要求将模型中的所有属性更新为 ICollection 类型。

无论如何,我们可以在索引示例数据时将这些字段设置为 MultiValued = false 吗?

一个例子来说明问题:

1) 在 Schemaless 模式下索引以下模型的样本:

public class TestModel
{
    [SolrUniqueKey("id")]
    public int Id { get; set; }

    [SolrField("guid")]
    public Guid Guid { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

2) Solr 的 managed-schema 文件将添加以下字段

  <field name="guid" type="strings"/>
  <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
Run Code Online (Sandbox Code Playgroud)

3) 查询/映射模型时出错

Object of type 'System.Collections.ArrayList' cannot be converted to type
Run Code Online (Sandbox Code Playgroud)

indexing solr schemaless solrnet

2
推荐指数
1
解决办法
1226
查看次数