首先,我很难过。我有一个CMS的搜索模块,可以在一个站点上正常运行,但它不会像在另一个站点上那样运行。
我有这个代码我用Ajax调用调用它们,只是在加载搜索站点时:
private string GetSearchContent()
{
Query q = GetQuery();
//for each area, set it up, perform search and render result
IArea products = new ProductArea(GetEcomExcludedGroupIDs(), GetEcomLanguage()).Search(q);
IArea pages = new PageArea(GetAreaId())
.Search(q);
IArea news = new NewsArea(GetIncludedNewsCategoryIDs())
.Search(q);
....
}
这里的重要部分是搜索功能。这是在类中实现的,但由于某种原因,代码将不会被执行。
我尝试拆分代码,所以我确信这就是错误所在。怪异的部分是它不会抛出任何异常,但只要我尝试调用搜索功能它就会停止执行。它甚至没有进入功能。
搜索功能如下所示:
public override IArea Search(Query q)
{
log.Debug("Product search");
....
}
它覆盖的函数只是一个声明函数的接口上的抽象函数。
我已经尝试将函数复制到执行它的同一个类,没有运气,我尝试访问类上的其他函数,并且工作正常。
我的问题是。什么可能导致这种行为?我试过环顾四周但却找不到其他同样问题的人。如前所述,完全相同的代码在另一个站点上顺利运行。
我真的希望有人可以帮助我更接近解决问题,或至少了解问题。
答案 0 :(得分:2)
问题是无法回答的。你声称Search
方法永远不会运行,并且错误的行是这一行:
IArea news = new NewsArea(GetIncludedNewsCategoryIDs()).Search(q);
在Search
方法之外,有一些不同的事情可能是错误的:
NewsArea
构造函数抛出异常GetIncludedNewsCategoryIDs
方法抛出异常你声明“没有try-catch” - 更多的理由不相信你的断言方法只是停止而没有抛出异常。请尝试以下操作以进行诊断:
try
{
IArea news = new NewsArea(GetIncludedNewsCategoryIDs()).Search(q);
}
catch (Exception e)
{
Logger.Log("Caught in the act: " + e.ToString());
throw;
}
如果你已经运行了这个并且仍然看到执行停止而没有记录任何异常,那么我们将看看其他可能性。