전에 웹 응용 프로그램이 "온 - 프레미스"솔루션 인 동안 디스크 저장 모드로 "표준"asp.net 차트 컨트롤을 사용했습니다. 이와 같이 :ASP.NET 차트 사용자 지정 처리기
<asp:Chart ID="AssetDistChart" runat="server" BackColor="Transparent"
Width="250px" Height="350px" ImageStorageMode="UseImageLocation" ImageLocation="~/files/categories_#SEQ(30,20)"> ...
이 모든 내 차트의 그림은 폴더/파일에있는 categories_XXX라는 이름으로 생성됩니다 ... 그리고 완벽했습니다.
이제 솔루션을 Azure 플랫폼에 전송하고 디스크에 차트 이미지를 저장하는 것이 더 이상 필요하지 않습니다. 그래서 Blob 저장소에서 차트 이미지를 저장 /로드하는 자체 차트 처리기를 만들었습니다. 핸들러는 다음과 같습니다 :
<asp:Chart ID="AssetDistChart" runat="server" BackColor="Transparent"
Width="250px" Height="350px" ImageStorageMode="UseHttpHandler">
을 또한 나는이 새로운 핸들러를 사용하는 Web.config의에서 차트 설정을 편집 :
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 차트 컨트롤은 다음과 같이 지금이다.
이 핸들러는 작동하지만 내 사진은 일반적인 이름으로 저장됩니다 chart_1.png 을 chart_0.png
...
어떻게 예전처럼 파일 내 자신의 이름을 관리 할 수 있습니다. 나는ImageLocation="~/files/categories_#SEQ(30,20)"
을 asp.net 차트 컨트롤에 추가하려고하지만 성공하지는 못합니다. 내 이름 (열쇠)을 어떻게 설정할 수 있습니까? 핸들러, asp.net 차트 컨트롤 또는 코드 제어가 선언 된 코드 숨김 파일에서. 당신이 푸른 BLOB 저장소에 이미지를 저장하면 위의 코드에서
감사합니다. 하지만 (예 : # SEQ() 사용하여) 전제 방식 asp.net 차트 컨트롤에서 차트 이미지의 내 자신의 이름을 정의 할 싶습니다. Save() 함수를 생성해야하기 때문에 "내 자신의 정의"키를 이미 가져와야합니다. 다른 사용자 (다른 이름)에 대한 코드 숨김의 키 ... – rjovic
#SEQ를 사용하여 먼저 이러한 이름의 테이블을 만든 다음 키를이 이름으로 선택하여 원하는 것을 얻을 수 있습니다. . 또는 다른 사용자 이름 "filesX"를 사용하고 "fileX/image"및 "fileY/image"라는 파일 이름을 만들 수 있습니다. 이렇게하면 원하는 것을 얻을 수 있습니다. – AvkashChauhan