web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Microsoft Dynamics AX (Archived)

Customized retail server cannot be invoked successfully in Retail server test. Who can help me?

(1) ShareShare
ReportReport
Posted on by

I've created a new CRT and Retail server dll in following piece of codes. and the retail proxy is generated, but the following error  is always encountered. I cannot find out resolution. Who can help me to resolve this problem. Thanks! 

Here is an error: 

An error occurred while trying to send all bufferred output to the client. Exception: Microsoft.Dynamics.Commerce.Runtime.CommerceException: {
  "error":{
    "code":"","message":"No HTTP resource was found that matches the request URI 'usnconeboxax1ret.cloud.onebox.dynamics.com/.../RemoveSuspendTransEntities('HOUSTON-14')/RemoveAllSuspendTrans?api-version=7.3'."
  }
}

Here is EdmModelExtender:

  [Export(typeof(IEdmModelExtender))]
        [ComVisible(false)]
        public class EdmModelExtender : IEdmModelExtender
        {
            /// <summary>
            /// Extends the EDM model.
            /// </summary>
            /// <param name="builder">The builder to build the EDM model.</param>
            public void ExtendModel(CommerceModelBuilder builder)
            {
                ThrowIf.Null(builder, "builder");

                // Extends entity sets.
                builder.BuildEntitySet<SampleDataModel.RemoveSuspendTransEntity>("RemoveSuspendTransEntities");

                // Extends entity set actions.
                var action = builder.BindEntityAction<SampleDataModel.RemoveSuspendTransEntity>("RemoveAllSuspendTrans");
                action.Parameter<SampleDataModel.RemoveSuspendTransEntity>("removeSuspendTransEntity");
                action.ReturnsFromEntitySet<SampleDataModel.RemoveSuspendTransEntity>("RemoveSuspendTransEntities");
            }
        }


Here is CustomizedEdmModelFactory:

 [Export(typeof(IEdmModelFactory))]
        [ComVisible(false)]
        public class CustomizedEdmModelFactory : CommerceModelFactory
        {
            /// <summary>
            /// Builds entity sets.
            /// </summary>
            protected override void BuildActions()
            {
                base.BuildActions();
                var action = CommerceModelFactory.BindEntityAction<SampleDataModel.RemoveSuspendTransEntity>("RemoveAllSuspendTrans");
         
                action.Parameter<SampleDataModel.RemoveSuspendTransEntity>("removeSuspendTransEntity");
                action.ReturnsFromEntitySet<SampleDataModel.RemoveSuspendTransEntity>("RemoveSuspendTransEntities");
                
            }           

            /// <summary>
            /// Builds entity sets.
            /// </summary>
            protected override void BuildEntitySets()
            {
                base.BuildEntitySets();
                CommerceModelFactory.BuildEntitySet<SampleDataModel.RemoveSuspendTransEntity>("RemoveSuspendTransEntities");
            }
        }


Here is CRT:

 public class RemoveSuspendTransEntity : CommerceEntity
        {
            private const string StoreIdColumn = "STORENUMBER";
            private const string TerminalIdColumn = "TERMINALNUMBER";

            /// <summary>
            /// Initializes a new instance of the <see cref="RemoveSuspendTransEntity"/> class.
            /// </summary>
            public RemoveSuspendTransEntity()
                : base("RemoveSuspendTransEntity")
            {                
            }

            /// <summary>
            /// Gets or sets the store identifier where this transaction was created.
            /// </summary>
            [DataMember]
            [Column(StoreIdColumn)]
            public string StoreId
            {
                get { return (string)this[StoreIdColumn]; }
                set { this[StoreIdColumn] = value; }
            }

            /// <summary>
            /// Gets or sets the terminal identifier where this transaction was created or resumed.
            /// </summary>
            [Key]
            [DataMember]
            [Column(TerminalIdColumn)]
            public string Id
            {
                get { return (string)this[TerminalIdColumn]; }
                set { this[TerminalIdColumn] = value; }
            }
        }

 [DataContract]
        public sealed class RemoveSuspendTransDataRequest : Request
        {
            /// <summary>
            /// Initializes a new instance of the <see cref="RemoveSuspendTransDataRequest"/> class.
            /// </summary>
            /// <param name="storeNumber">The store number.</param>
            public RemoveSuspendTransDataRequest(RemoveSuspendTransEntity removeSuspendTransEntity)
            {
                this.RemoveSuspendTransEntity = removeSuspendTransEntity;
            }

            /// <summary>
            /// Gets the store number related to the request.
            /// </summary>
            [DataMember]
            public RemoveSuspendTransEntity RemoveSuspendTransEntity { get; private set; }
        }

  [DataContract]
        public sealed class RemoveSuspendTransDataResponse : Response
        {
            /// <summary>
            /// Initializes a new instance of the <see cref="RemoveSuspendTransDataResponse"/> class.
            /// </summary>
            /// <param name="dayHours">The collection of store hours.</param>
            public RemoveSuspendTransDataResponse(RemoveSuspendTransEntity removeSuspendTransEntity)
            {
                this.RemoveSuspendTransEntity = removeSuspendTransEntity;
            }

            /// <summary>
            /// Gets the store day hours.
            /// </summary>
            [DataMember]
            public RemoveSuspendTransEntity RemoveSuspendTransEntity { get; private set; }
        }

   public class RemoveSuspendTransDataService : IRequestHandler
        {
            /// <summary>
            /// Gets the collection of supported request types by this handler.
            /// </summary>
            public IEnumerable<Type> SupportedRequestTypes
            {
                get
                {
                    return new[]
                    {
                        typeof(RemoveSuspendTransDataRequest)
                    };
                }
            }

            /// <summary>
            /// Entry point to RemoveSuspendTranssDataService service.
            /// </summary>
            /// <param name="request">The request to execute.</param>
            /// <returns>Result of executing request, or null object for void operations.</returns>
            public Response Execute(Request request)
            {
                if (request == null)
                {
                    throw new ArgumentNullException("RemoveSuspendTransDataRequest request null");
                }

                Type reqType = request.GetType();
                if (reqType == typeof(RemoveSuspendTransDataRequest))
                {
                    return this.RemoveSuspendTrans((RemoveSuspendTransDataRequest)request);
                }
                else
                {
                    string message = string.Format(CultureInfo.InvariantCulture, "RemoveSuspendTransDataRequest Request '{0}' is not supported.", reqType);
                    RetailLogger.Log.GenericWarningEvent(message);
                    throw new NotSupportedException(message);
                }
            }

            private RemoveSuspendTransDataResponse RemoveSuspendTrans(RemoveSuspendTransDataRequest request)
            {
                ThrowIf.Null(request, "request");
                return new RemoveSuspendTransDataResponse(new DataModel.RemoveSuspendTransEntity { Id="Test", StoreId="all" });
            }


Here is RetailProxy code( auto-generate)

  // Operations
        
        /// <summary>
        /// RemoveAllSuspendTrans method.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <param name="removeSuspendTransEntity">The removeSuspendTransEntity.</param>
        /// <returns>RemoveSuspendTransEntity object.</returns>
        public async Task<RemoveSuspendTransEntity> RemoveAllSuspendTrans(string id, Contoso.Commerce.Runtime.DataModel.RemoveSuspendTransEntity removeSuspendTransEntity)
        {       
            return await this.context.ExecuteOperationSingleResultAsync<RemoveSuspendTransEntity>(
                "RemoveSuspendTransEntities",
                "RemoveSuspendTransEntity",
                "RemoveAllSuspendTrans",
                true, null, OperationParameter.Create("Id", id, true),
                OperationParameter.Create("removeSuspendTransEntity", removeSuspendTransEntity, false));
        }


 

 

*This post is locked for comments

I have the same question (0)
  • Suggested answer
    Community Member Profile Picture
    on at

    I've resolved this issue.

  • SergeyP Profile Picture
    2,928 on at

    If you could share the details of your resolution - the community would then benefit from that.

  • Suggested answer
    Community Member Profile Picture
    on at

    I don't know the reason. However, the problem is resolved when the EntityName as a new property with datamember attribute in RemoveSuspendTransEntity class.

    like this:

    [DataMember]
    public new EntityName {get;set;}


  • Lindaura Profile Picture
    30 on at

    Hello William song,

    I have the same problem but the proposed solution did not work for me, some tip?
    The implementation is the same as samples

  • Hassan_Tariq Profile Picture
    5 on at

    Hi,

    I am facing the same issue and the proposed solution didnt help. Please let me know if anyone was able to resolve it any other way.

    Thanks,

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Neeraj Kumar – Community Spotlight

We are honored to recognize Neeraj Kumar as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics AX (Archived)

#1
Martin Dráb Profile Picture

Martin Dráb 4 Most Valuable Professional

#1
Priya_K Profile Picture

Priya_K 4

#3
MyDynamicsNAV Profile Picture

MyDynamicsNAV 2

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans