NopCommerce代码在使用ASP时创建多个空引用异常.. NET Web API
本文关键字:引用 异常 NET API Web 创建 代码 ASP NopCommerce | 更新日期: 2023-09-27 18:08:08
我目前正面临着使用ASP的问题。. NET Web API的NopCommerce网站,我需要连接到我的跨平台应用程序。
当我调用API时,代码中断。它在:
处产生一个异常var scope = EngineContext.Current.ContainerManager.Scope()
在task.cs
页。
我试过调试代码,但异常不定期生成;有时会来,有时不会。然而,我确实发现了一些问题:
var sis = EngineContext.Current.Resolve<StoreInformationSettings>()
.
我试着加载它,直到它加载。例如,将其放入while
语句中,如:
var sis = EngineContext.Current.Resolve<StoreInformationSettings>()`
while(sis == null)
{
sis = EngineContext.Current.Resolve<StoreInformationSettings>()
}
类似地,还有一些实例。这意味着它会加载,但可能会延迟一段时间。
在电子商务论坛上有一个更新autofac
包的说明,我照做了。所有Autofac Nugets都在no . web中单独尝试。
参考这里的链接,我已经尝试修复,但它没有解决我的问题。
I came to the conclusion that it has some issue with the Autofac DI settings (not sure)
。还是说NopCommerce是不支持api的?
正如Mr. Rigueira建议的那样,我已经尝试在我的插件中注册路由配置类中的路由。
API的路由配置在这里:
public void RegisterRoutes(RouteCollection routes)
{
GlobalConfiguration.Configure(config =>
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { controller = "TestApi", id = RouteParameter.Optional }
);
});
}
但是,这似乎没有什么区别。
我尝试以正常模式从插件注册路由:
public void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"WebApi",
"api/{controller}/{action}/{id}",
new { controller = "WebApi", action = "", id = RouteParameter.Optional },
new[] { "Nop.Plugin.WebApi.EduAwake.Controllers" }
);
}
仍然没有。下面是我得到的错误:
Multiple types were found that match the controller named 'Topic'. This can happen if the route that services this request ('api/{controller}/{action}/{id}') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter.
Line 13: <div class="col-md-12 padding-0" id="home-topic" style="margin-left:-14px;">
Line 14: <div id="home-topic-content" style="width:104%;">
Line 15: @Html.Action("TopicBlock", "Topic", new { systemName = "HomePageText" })
Line 16: </div>
Line 17: </div>
在 index.cshtml 。
这似乎是没有希望的情况。
我已经为此工作了几个月了!
检查您的代码将是可取的,但是,最有可能的是,您在注册Web API时绕过了nopcommerce,现在您正在尝试使用依赖关系,而不是在通常的流中注册它们。这就是为什么当您在循环中等待时它们最终会出现的原因(我无法想象您是如何找到这样的解决方案的……)
作为一种解决方案,您应该使用插件集成Web API,而不是修改原始源代码。我以前做过,并不难。如果我没记错的话,曾经有几个这样的例子