Asp.net mvc 3 Can';无法使Axapta.CreateAxaptaObject()正常工作

Asp.net mvc 3 Can';无法使Axapta.CreateAxaptaObject()正常工作,asp.net-mvc-3,axapta,Asp.net Mvc 3,Axapta,我的ASP.NET MVC 3应用程序有一个Web服务,可以在AX中创建新的销售订单。在AX中,我创建了一个OnlineOrder类,目前它有1个方法。它用于生成销售参考。以下是我的web服务中的代码: public AxaptaObject order; public void CreateOrder() { AxaptaStart(); order = Axapta.CreateAxaptaObject("On

我的ASP.NET MVC 3应用程序有一个Web服务,可以在AX中创建新的销售订单。在AX中,我创建了一个OnlineOrder类,目前它有1个方法。它用于生成销售参考。以下是我的web服务中的代码:

public AxaptaObject order;

        public void CreateOrder()
        {
            AxaptaStart();
            order = Axapta.CreateAxaptaObject("OnlineOrder");
            AxaptaStop();
        }

        public string GetSalesRef(string username, string delivery, string reference)
        {

            AxaptaStart();
            string number = order.Call("orderCreate", username, delivery, reference).ToString();
            AxaptaStop();
            return number;
        }
然后在我的控制器中,我调用以下方法:

            client.CreateOrder();

            string number = client.GetSalesRef(user.Username, order.deliverymethod, order.custorder).ToString();
这不起作用,也没有异常信息显示,它只是一条空白消息。我相信
order
AxaptaObject不是
OnlineOrder
类型,因此它不能调用这些方法。如何实例化对象以使用
orderCreate
方法

编辑:

如果我这样做:

        public string CreateOrder(string username, string delivery, string reference)
        {
            AxaptaStart();
            order = Axapta.CreateAxaptaObject("OnlineOrder");
            string number = order.Call("orderCreate", username, delivery, reference).ToString();
            AxaptaStop();
            return number;
        }

这是可行的,但这不是一个有效的解决方案,因为我想在将来向我的OnlineOrder对象添加更多的方法,我不想在我的web服务上调用它们都在一个方法中

这永远不会起作用,因为调用
AxaptaStop
方法时,
order
对象有点关闭

我建议创建一个实现类,然后在
Dispose
方法中调用
AxaptaStop
AxaptaStart
调用可以转到构造函数。这将允许您确定AX上下文的范围,如:

using (var axWrap = new AxWrap())
{
    var order = axWrap.onlineOrder();
    var number = axWrap.orderCreate(order, username, delivery, reference);
}

Dispose
是由自动调用的。

但是这也需要在我的Web服务上将这些都放在一个方法中,不是吗?如何在不同的方法中使用相同的“order”对象?不,不会。
order
对象可以从包装器方法返回,如示例所示(或保存在成员变量中)。所有对COM的调用都隐藏在包装器类中,隐藏了难看的细节。它还使来自调用者的代码看起来很好(r)。