このGoogleサンプルプロジェクトをVS2015で動作させることができました。
ただし、「IIS」に公開してホストした後、リンクを開くと、画像のようにWebページにこのメッセージが表示され続けました。
Web.configにキーを追加しましたが、それでも機能しません。以前に誰かがこれを行ったことがあるかどうか疑問に思っています。本当に助けが必要です。ありがとうございます。
編集:これが私のコードです
Web.Config
<appSettings>
<!-- Set to your Google project id as shown on the Google Developers Console -->
<add key="GoogleCloudSamples:ProjectId" value="gdtest-1332" />
<add key="GOOGLE_APPLICATION_CREDENTIALS" value="D:\ProjectCloud\gdtest-12323.json" />
<!--
Set to either mysql or datastore.
If using mysql, update the connectionString far below, and then run Update-Database in the
Package Manager Console.
-->
<add key="GoogleCloudSamples:BookStore" value="datastore" />
<!-- Set to your Google Cloud Storage bucket -->
<add key="GoogleCloudSamples:BucketName" value="cloudstoragetestbillez" />
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
実行時に次のようにプログラムで環境変数を設定します。
string credential_path = @"C:\..\key.json";
System.Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", credential_path);
私はIISの専門家ではありませんが、デスクトップ環境で設定された環境変数を理解していないようです。
Visual Studio 2017の再起動コンソールアプリケーション用に実行しました。
Console.WriteLine(System.Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS"));
グーグルのドキュメントから、それはenv varであり、web.configではないようです。
サービスアカウントの認証情報を使用している場合は、環境変数GOOGLE_APPLICATION_CREDENTIALSをダウンロードしたJSON認証情報ファイルへのパスに設定します。
コマンドプロンプトを使用する場合:
set GOOGLE_APPLICATION_CREDENTIALS=[PATH_JSON]
コードに資格情報を設定する必要はありません
グーグルは言う:
サービスアカウントを作成した後、アプリケーションに資格情報を提供するための2つの選択肢があります。 GOOGLE_APPLICATION_CREDENTIALS環境変数を明示的に設定するか、コードでサービスアカウントキーへのパスを渡すことができます。