GridWebが一時ファイルを保存するパスを指定する
ファイルキャッシュについて
GridWebセッションモードがViewStateの場合、一時セッションファイルはアプリケーションベースディレクトリ内に保存されます。アプリケーションベースディレクトリには書き込み権限がない場合があり、そのような場合、GridWebはそのような例外をスローします。
[UnauthorizedAccessException: Access to
the path 'D:</span>inetpub</span>wwwroot</span>AsposeExcelTest</span>gwb_tempGridWeb1' is denied.]
上記の問題への解決策は、アプリケーションベースディレクトリに書き込みアクセスを与えるか、GridWeb.SessionStorePathプロパティを使用して書き込みアクセスのあるGridWeb一時セッションファイルのパスを変更することです。このパスは、アプリケーションベースディレクトリに対する相対パスである必要があります。
GridWebが一時セッションファイルを保存するパスを指定する
以下のサンプルコードは、GridWebが一時セッションファイルを保存するパスを指定しています。
画像キャッシュについて
ワークシートに図形/画像がある場合、GridWebはすべての図形/画像をキャッシュパスに保存します
デフォルトのキャッシュパスはSystem.Web.HttpContext.Current.Server.MapPath("/acwcache")
また、GridWeb.PictureCachePathを使用して、このパスを特定のパスに設定することもできます。
ページを開くと、GridWebはリクエスト画像URLを解決し、URL IDによってキャッシュから画像ストリームを取得します。
たとえば、ページのアドレスがhttp://ip/mygridwebapp/test.aspxの場合
GridWebによって生成された画像リクエストURLはhttp://ip/mygridwebapp/test.aspx/acw_image/imageidになります。
時には、Friendly Urlを使用すると、図形/画像が読み込まれないことがあります。
画像URLのリクエストを確認する必要があります。
通常の画像リクエストは次のようになります:http://ip/mygridwebapp/test.aspx/acw_image/imageid
ただし、リクエストが次のようになる場合:http://ip/mygridwebapp/test/acw_image/imageid
FriendlyUrlを使用する場合、GridWebの画像URLのリクエストをフィルタリングする必要があります。
したがって、GridWebコントロールサーバーはリクエストを取得し、解決し、キャッシュパスから画像ストリームを見つけることができます。
たとえば、ページのURLが次のような場合:http://ip/mygridwebapp/test.aspx
次に、以下のコードはそのような問題を修正するための回避策です。
//write your custom url resolver:MyWebFormsFriendlyUrlResolver
public class MyWebFormsFriendlyUrlResolver : WebFormsFriendlyUrlResolver
{
public MyWebFormsFriendlyUrlResolver() { }
public override string ConvertToFriendlyUrl(string path)
{
if (!string.IsNullOrEmpty(path))
{//filter your GridWeb related page,here we use 'mygridwebapp' to identify as we assume your page is:http://ip/mygridwebapp/test.aspx
if (path.ToLower().Contains("mygridwebapp"))
{ // Here the filter code
return path;
}
}
return base.ConvertToFriendlyUrl(path);
}
}
//in RoutConfig.cs set the custom url resolver:MyWebFormsFriendlyUrlResolver
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings, new IFriendlyUrlResolver[] {
new MyWebFormsFriendlyUrlResolver() });
}
}