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

这似乎是没有希望的情况。

我已经为此工作了几个月了!

NopCommerce代码在使用ASP时创建多个空引用异常.. NET Web API

检查您的代码将是可取的,但是,最有可能的是,您在注册Web API时绕过了nopcommerce,现在您正在尝试使用依赖关系,而不是在通常的流中注册它们。这就是为什么当您在循环中等待时它们最终会出现的原因(我无法想象您是如何找到这样的解决方案的……)

作为一种解决方案,您应该使用插件集成Web API,而不是修改原始源代码。我以前做过,并不难。如果我没记错的话,曾经有几个这样的例子