Amazon C#request.FeedContent.Position = 0 error"无法访问已关闭的文件"

时间:2017-11-15 15:29:10

标签: c# amazon nav

我正在尝试使用C#dll和flatfile(而不是xml)来使SubmitFeed工作。该语言是名为Dynamics NAV的Microsoft ERP系统的C / AL。这是我的代码:

config := config.MarketplaceWebServiceConfig();

config.ServiceURL := 'https://mws.amazonservices.com';

service := service.MarketplaceWebServiceClient(MyAccessKey,MySecretKey,'NAV','1.0',config);

request := request.SubmitFeedRequest();

request.Merchant := 'mymerchant';

request.Marketplace := 'MyMarketPlaceID';

request.FeedContent := SystemIOFile.Open('C:\Test\Jason.txt',FileMode.Open,FileAccess.Read);

request.ContentMD5 := service.CalculateContentMD5(request.FeedContent);

request.FeedContent.Position := 0;

request.FeedType := '_POST_INVENTORY_AVAILABILITY_DATA_';

response := service.SubmitFeed(request);

request.FeedContentPosition:= 0行是错误所在的位置"无法访问已关闭的文件"

我的提交帐户和提交工作完全正常,我无法提交工作。

我跟随其他C#示例,他们似乎是一样的,有人有想法吗?

1 个答案:

答案 0 :(得分:0)

想出来了。这一行是关闭文件的:

request.ContentMD5 := service.CalculateContentMD5(request.FeedContent);

我认为这是C / AL(NAV)中的一个错误,因为我可以在c#和它中编写类似的代码 完全有效。

我的工作是创建请求的第二个实例,并从第一个请求中获取MD5值。这样的事情有效:

request := request.SubmitFeedRequest();    
request.Merchant := "Merchant No.";    
request.FeedContent := SystemIOFIle.Open('C:\Test\Jason.txt',FileMode.Open,FileAccess.Read);    
MD5Value := WSClient.CalculateContentMD5(request.FeedContent);
CLEAR(SystemIOFIle);    
CLEAR(request);        
request2 := request2.SubmitFeedRequest();    
request2.Merchant := "Merchant No.";    
request2.FeedContent := SystemIOFIle.Open('C:\Test\Jason.txt',FileMode.Open,FileAccess.Read);

request2.ContentMD5 := MD5Value;    
request2.FeedContent.Position := 0;    
request2.FeedType := '_POST_FLAT_FILE_PRICEANDQUANTITYONLY_UPDATE_DATA_';    
response := service.SubmitFeed(request2);