アプリ版:「スタンプのみでお礼する」機能のリリースについて

C#でChartコントロールを使い、グラフを表示するページを作成。サーバーにアップするとサーバーエラーが発生!!何故でしょうか。

Visual web DeveloperでC#を使って開発しています。chartコントロールを使用し、グラフを表示するaspxページを作成しました。他のaspxページと一緒に.net3.5対応のサーバーにアップしたところ、chartコントロールを使用したaspxページのみ、ページに遷移しようとすると下記エラーがでてしまいました。


アプリケーションでサーバー エラーが発生しました。
'http://www.ADDRESS.com/TempImageFiles/' は有効な仮想パスではありません。
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。
例外の詳細: System.Web.HttpException: 'http://www.ADDRESS.com/TempImageFiles/' は有効な仮想パスではありません。
[InvalidOperationException: グラフ ハンドラの構成の 'url' が無効です。]


ちなみに作成時にchartコントロールを追加するとき自動的にweb.configに作成された以下の文
<appSettings>
<add key="ChartImageHandler" value="Storage=file;Timeout=20;Url=~/tempImages/;"/>
</appSettings>
のurlの内容を指定の絶対パス(http://www.ADDRESS.com/TempImageFiles)に書き換えています。
(TempImageFilesのフォルダは新たに作成しました)

絶対パスの綴りは間違えて無く、ローカル環境では問題なくチャートが表示されました。

チャートコントロールは下記サイトを参考にして導入しました。ダウンロードしたサンプルソリューションをサーバーにあげてみたところ、同様のエラーが発生しました。
http://www.atmarkit.co.jp/fdotnet/scottgublog/20 …

chartコントロールは.net4.0から正式対応と書いてあるサイトがあったのですが、現在のサーバーでは使えないのでしょうか。。。
使用しているサーバーはここです。 http://www.activeweb.jp/

何卒アドバイスお願い致します。

「C#でChartコントロールを使い、グラ」の質問画像

A 回答 (2件)

"asp:Chart"はScottGu氏が言うとおり、.NET 3.5対応のコンポーネントです。


なので、サーバが,NET Framework 3.5対応であれば動作するはずです。
メッセージが「コンポーネントおよびその関連ファイルが見つからない云々」ではないので、動作そのものは問題ないでしょう。

Config.sysに関して、
<appSettings>
<add key="ChartImageHandler" value="Storage=file;Timeout=20;Url=~/tempImages/;"/>
</appSettings>
のurlの内容を指定の絶対パス(http://www.ADDRESS.com/TempImageFiles)に書き換えています。

とありますが、仮想絶対パス"~/tempImage"ではマズいのですか?
どうもここで絶対Urlを指定しているのが悪いように思えます。
Webアプリケーションのルートに、"temImages"フォルダを作り、実行アカウントに書込・修正権限を与えてください。必ず動くはずです。
"asp:Chart"はここにテンポラリな表示用画像ファイルを作成するようなので、書込権限は必須ですが、リネーム動作なども考えられるため、できれば修正権限も与えてやってください。
    • good
    • 0
この回答へのお礼

アクセス権の問題でした。実行アカウントに書込権限を与えたら表示されました。
どうもありがとうございました。

お礼日時:2010/08/26 22:42

別途ダウンロードしないといけないコントロールであれば、それがサーバーにインストールされている必要がありますよね。

おそらくGACに登録する必要があり、多分共有レンタルサーバでは無理です。専用サーバなら出来るかもしれません。
まあ、activeweb に聞いてみるのが手っ取り早いと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!