0

http://www.dscredstorm.com/getisbninfo.aspx

AmazonのAPIを使用しようとしています。C# Windows フォーム アプリであるサンプル コードをダウンロードしましたが、C# Web サイトでも機能するはずだと思いました。正しいですか?

SignedRequestHelper.cs は、署名された要求を送信するために必要な機能を備えているように見えるファイルです。名前空間は AmazonProductAdvtApi です。ファイルを App_Code/Csharp に置き、「using AmazonProductAdvtApi;」を追加しました。マイページへ。

しかし、次のエラーが表示されます:「AmazonProductAdvtApi.SignedRequestHelper」は、保護レベルが原因でアクセスできません

なんで?

詳細: SignedRequestHelper helper = new SignedRequestHelper(accessKeyId, secretKey, destination);

参照: http://www.dscredstorm.com/getisbninfo.aspx

SignedRequestHelper.cs のクラス宣言は次のとおりです。

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Security.Cryptography;

namespace AmazonProductAdvtApi
{
    class SignedRequestHelper
    ...
    ... some private consts and vars...

    public SignedRequestHelper(string awsAccessKeyId, string awsSecretKey, string destination)
    {
        this.endPoint = destination.ToLower();
        this.akid = awsAccessKeyId;
        this.secret = Encoding.UTF8.GetBytes(awsSecretKey);
        this.signer = new HMACSHA256(this.secret);
    }
4

3 に答える 3

1

おそらく、これは彼らがあなたに使用してほしいパブリック インターフェイスではありません。このクラスをラップする public クラスが存在する可能性があります。

于 2010-01-08T20:19:48.717 に答える
1

クラスはパブリックとしてマークされていません。したがって、他の名前空間からはアクセスできません。

ほとんどの場合、それを使用する他の A​​mazon クラスもAmazonProductAdvtApi名前空間にあるため、問題はありません (明示的な可視性を持たないクラスはinternalデフォルトで取得されます)。

そのクラスを使用する場合は、その宣言を に変更しpublic class SignedRequestHelperます。このクラスは一般向けではない可能性があることに注意してください。つまり、一般的な API で通常期待される特定の種類のエラー チェックが欠けている可能性があります。

于 2010-01-08T20:14:42.533 に答える
0

「保護レベルが原因でアクセスできない」とは、意図したスコープ外のアイテムを参照しようとしていることを意味します。つまり、別の無関係なクラスからプライベート クラスのインスタンスを作成しようとしています。using ステートメントはここでは問題ではないようです。

于 2010-01-08T20:07:13.453 に答える