2017-11-15 5 views
0

C#dllとフラットファイル(xmlでない)を使用してSubmitFeedを動作させようとしています。 Dynamics NAVと呼ばれるMicrosoft ERPシステムのC/ALです。ここに私のコードは次のとおりです。Amazon C#request.FeedContent.Position = 0エラー "クローズドファイルにアクセスできない"

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行がある

私はsubmissioncountを持っており、完全に作業submissionresult、私は単に」することができますsubmitfeedを働かせてください。

私は他のC#の例に従いましたが、それらは同じであるように見えますが、誰もが思考を持っていますか?

答えて

0

これを実証しました。この行は、ファイルを閉じものです:

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

私はC#で同様のコードを書くことができ、それが 完全に機能し、これはC/AL(NAV)のバグであると考えています。

私の回避策は、リクエストの2番目のインスタンスを作成し、最初のリクエストから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); 
関連する問題