私の Web アプリケーションが「オンプレミス」ソリューションである前は、ディスク ストレージ モードで「標準」の asp.net チャート コントロールを使用していました。このような :
<asp:Chart ID="AssetDistChart" runat="server" BackColor="Transparent"
Width="250px" Height="350px" ImageStorageMode="UseImageLocation" ImageLocation="~/files/categories_#SEQ(30,20)"> ...
これにより、すべてのチャートの写真が、categorys_XXX という名前でフォルダー /files に生成されます...そして、それは完璧に機能しました。
現在、ソリューションを Azure プラットフォームに転送する必要があり、チャート イメージをディスクに保存することはもはや選択肢ではありません。そこで、Blob Storage からチャート画像を保存/ロードする独自のチャート ハンドラーを作成しました。ハンドラーは以下です:
public class ChartImageHandler : IChartStorageHandler
{
...
public void Delete(string key)
{
CloudBlob csv = chartContainer.GetBlobReference(key);
csv.Delete();
}
public bool Exists(string key)
{
bool exists = true;
WebClient webClient = new WebClient();
try
{
using (Stream stream = webClient.OpenRead(key))
{ }
}
catch (WebException)
{
exists = false;
}
return exists;
}
public byte[] Load(string key)
{
CloudBlob image = chartContainer.GetBlobReference(key);
byte[] imageArray;
try
{
imageArray = image.DownloadByteArray();
}
catch (Exception e)
{
System.Threading.Thread.Sleep(1000);
imageArray = image.DownloadByteArray();
}
return imageArray;
}
public void Save(string key, byte[] data)
{
CloudBlockBlob pictureBlob = chartContainer.GetBlockBlobReference(key);
pictureBlob.UploadByteArray(data);
}
}
また、私のasp.netチャートコントロールは次のようになりました:
<asp:Chart ID="AssetDistChart" runat="server" BackColor="Transparent"
Width="250px" Height="350px" ImageStorageMode="UseHttpHandler">
また、web.config のチャート設定を編集して、この新しいハンドラーを使用しました。
このハンドラーは機能しますが、私の写真は一般的な名前で保存されます:
chart_0.png chart_1.png ...
以前のように自分のファイル名を管理するにはどうすればよいですか。追加してみますImageLocation="~/files/categories_#SEQ(30,20)"
asp.net チャート コントロールに移行しましたが、成功しませんでした。自分の名前 (キー) とその配置場所を設定するにはどうすればよいですか? ハンドラー、asp.net チャート コントロール、または char コントロールが宣言されている分離コード ファイル。