2016年01月14日

フォーム認証とセッションは、相互に関係ないので要注意

Webサーバでのセッションは、ブラウザに対して SessionID が発行されて、Session 変数にクライアント固有の値を保持します。タイムアウトはデフォルトで20分です。ログイン等を行った後で、ログイン状態を Session 変数に保存したりしますが、クライアントからの応答がなにもない状態が続くとタイムアウトになり、セッションに保存していた情報はすべて消えます。

一方で、フォーム認証は、FormsAuthentication.SetAuthCookieでログイン状態になり、FormsAuthentication.SignOutでログアウト状態になります。フォーム認証もブラウザに対してチケットを発行する仕組みで、時間がきたらタイムアウトしますが、永続的に与えることも可能です。

セッションと、フォーム認証は、基本的にそれぞれ独自のタイムアウトがあるわけですが、別々のタイムアウト時間を与えることができるため、セッションがタイムアウトしても、フォーム認証は残っていたり、その逆に、フォーム認証のタイムアウト時間が短いとセッションは残っているのに、フォーム認証がタイムアウトしてしまうことがあります。

例えば、フォーム認証が先にタイムアウトすると、web.config で指定していたページへアクセスできなくなったりします。逆に、セッションが先にタイムアウトすると、ログインしているように見えるのにページ内容が違って見えたりします。どうしたらいいかは、システムごとに違うと思いますが、まずはフォーム認証とセッションを、ログイン状態であるか、ログアウト状態であるかを一致させることが重要だと思います。

とにかく、セッションと、フォーム認証はそれぞれ独自のメカニズムであり、全く関係ない点に要注意です。
posted by 開発G at 07:15| Comment(0) | TrackBack(0) | ASP.NET

2015年12月22日

AzureSQL V12 の BACPAC が SQLServer Management Studio へインポートできない場合

AzureSQL がいつの間にか V12 になっていて、自動バックアップされている BACPAC ファイルが
SQLServer Management Studio にインポートする際に、エラーが出て取り込めなくなっていました。
いろいろ調べてみると、パソコン側の SQLServer データ層アプリケーションフレームワークというのをアップデイトする必要があるようです。データ層アプリケーションは、時々アップデイトされているようなのですが、自動アップデイトには入っていないみたいで、手動でアップデイトする必要があるようです。

ダウンロードしようと思ったら、いろいろなバージョンがありましたが、SQLServer データ層アプリケーションフレームワーク(2015年2月バージョン) をインストールしたら解決しました。
posted by 開発G at 10:09| Comment(0) | TrackBack(0) | SQL

2015年07月18日

OpenGIS について

GIS で扱うデータは、将来的な拡張を考えると OpenGIS 標準に近づけておいた方がいいでしょう。(というより、自然にサブセット的になっているはずですが、、、)

データ型については、交換フォーマットとしても使える XML の拡張である
GML 仕様書を推奨します。 ただ、最近は、オープンコミュニティで整備されている GeoJSON というのもあるようです。ファイルサイズを考えると、閉じる側のタグを書かなくていい分、JSON 版の方が小さくなりそうな気がしますが、説明的なタグも多いのでどちらがいいか好みがわかれるところです。

メソッドについては、SQLServer では、Geometry(幾何)と、Geography(地理)が用意されていて、Geography は、緯度経度を対象にしています。そのため日付変更線をまたぐような演算もできるかわりに、演算時間がかかるので、日本国内に限定する場合には、Geometry で演算した方が効率的な場合もあると思います。メソッドは、OGC で定義されている資料に沿って開発されています。OGC の仕様書

処理系については、調べたところ、PostgraSQL 上で動作するライブラリPostGIS の他、Oracle, SQLSerer などが有名です。どれも OGC 準拠と言っているので同じように動作すると思いますが、空間データ量が多くなってくると、DBエンジンに含まれる空間インデックスの実装がクエリ速度などに影響してくるはずです。また、空間データの操作は、すべて SQL で記述しなければならず、個人的には何でもSQL で記述するスタイルがあまり好きではありません。特に、外部との入出力などは、すべてを SQL で記述するのではなくて、演算は SQL で行い、GIS アプリ等との入出力は、アプリ記述言語 (JAVA, C# など)で行う方が、後でメンテしやすいと思います。

以上、開発メモ。
posted by 開発G at 10:47| Comment(0) | TrackBack(0) | 仕様

2015年06月27日

ASP.NET の 名前空間 '???' では不適切ですエラーについて


ASP.NET で開発中に、ユーザコントロール等を、別プロジェクトからコピーしてきたときに、このエラーに遭遇しました。プロジェクトの obj フォルダや、Windows\Microsoft.NET\Framework*\*\Temporary ASP.NET Files\ の下を削除したりすると、一時的に現象は消えるのですが、しばらくすると同じ現象が出ていました。

いろいろ調べると、どうもコンパイラのバグのようです。

web.config に、 のように、batch="false" を入れるとこの不可解な現象は消えます。
posted by 開発G at 23:11| Comment(0) | TrackBack(0) | Programming

2015年04月01日

AjaxMinifier の圧縮オプション

JavaScript ファイルを小さくするには、オンラインで使える
Google Closure Compiler
を使っていましたが、最近、コマンドラインで使える、Microsoft AjaxMinifier を使うようになりました。

この AjaxMinifier を使う場合は、次のように、-hc オプションを付ける必要があります。付け忘れるとファイルが小さくなりません。

>ajaxmin.exe -hc ???.js -out ???.min.js

posted by 開発G at 10:00| Comment(0) | TrackBack(0) | Programming