2012年3月30日金曜日

ASP.NET ( IBatis.NET ) から SQL Server 2008 への接続について

IBatis.NET にて、

# sqlmap.config

<provider name="sqlServer2.0"/>
<dataSource name="lec2" connectionString="Persist Security Info=False;Data source=(local)\SQLEXPRESS;Initial Catalog=xxxx;User ID=xxxxx;Password=xxxxx;" />

# provider.config

<provider
     name="sqlServer2.0"
     enabled="true"
     description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V3.5"
     assemblyName="System.Data, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"
     connectionClass="System.Data.SqlClient.SqlConnection"
     commandClass="System.Data.SqlClient.SqlCommand"
     parameterClass="System.Data.SqlClient.SqlParameter"
     parameterDbTypeClass="System.Data.SqlDbType"
     parameterDbTypeProperty="SqlDbType"
     dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
     commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
     usePositionalParameters = "false"
     useParameterPrefixInSql = "true"
     useParameterPrefixInParameter = "true"
     parameterPrefix="@"
     allowMARS="true"
/>
上記でも接続できなかったので Windows ファイアーウォールで TCP/UDP 1433 の確認と「SQL Server 構成ツール」の 「SQL Server 構成マネージャー」のTCPおよび名前付きパイプが有効になっているか確認。
> どうも TCP は関係無かった模様…

それでも繋がらなかったので色々と見直し悩んだ結果、上記 sqlmap.config の dataSource の接続文字列で data source=(local)\SQLEXPRESS; の所を data source=(local)/SQLEXPRESS; としていたのが原因と分かる。

気づくまで 1時間30分ぐらい掛かった・・・。

環境: Windows 2008 r2 (64bit), IIS 7.5, SQL Server 2008 r2 Express, .NET Framework 3.5

2012年3月29日木曜日

ECCUBE の文字化け

[1] ECCUBEインストール後に 管理ページで「基本情報管理」->「SHOPマスター」ページで文字化けしていた。(課税規則、都道府県など)
    => 原因: MySQL の データベースの文字コードが Latin1 になっていた…。
    => 対応: MySQL の DB を UTF8へ変更して CREATE DATABASE する。

[2] ECCUBE を再インストールしても文字化けが直らない
    => phpMyAdmin や コンソールでは文字化けしていない。
    => ECCube の data/cache 内にマスタデータのキャッシュが残っていたので、一旦ファイルを削除する。
    => 文字化けが直った。

■ECCUBE サーバー環境

  EC-CUBEバージョン:2.11.5
  PHP情報:5.3.10
  DB情報:MySQL 5.5.20
  OS情報:Linux localhost.localdomain 2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 12:45:52 EST 2012 i686 Apache/2.2.3 (CentOS)

2012年3月22日木曜日

IIS7 で require や include で Permission Error が出る

Windows でのアクセス権の設定を見直す。


  • PHP の実行ファイル( php.exe ) のアクセス権
  • 公開フォルダのアクセス権


上記を IUSER_[コンピューター名] の読み取りと実行ができるようにしておく。

IIS 7 での SQL Server 2008 への接続

接続するときに

[Microsoft][SQL Server Native Client 10.0][SQL Server]ユーザー はログインできませんでした 

と出る場合、DBのログインに接続時のユーザーが設定されていない場合があるので要確認。

2012年3月19日月曜日

アセンブリは部分的に信頼されている呼び出し元を許可しません

「System.Security.SecurityException: アセンブリは部分的に信頼されている呼び出し元を許可しません。」

■怪しい対応

  • IIS 7 の機能ビューの ".NET信頼レベル" を "Full" にすると出ない。
  • 確かにエラーは出なくなったが…。


■アセンブリによる対応

  • IIS 7 の機能ビューの ".NET信頼レベル" を "midium"。
  • アセンブリに AllowPartiallyTrustedCallers 属性を設定する。 <Assembly: Security.AllowPartiallyTrustedCallers()>


…らしいが、正直理屈が分からん…。

再度詳しく調べる必要あり。

64 bit 環境での ASP.NET 2.0 の実行

32 bit 環境で動作している ASP.NET 2.0 のプロジェクトを 64 bit 環境 の IIS にデプロイすると、

ファイルまたはアセンブリ 'xxxxxx'、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました

と出る。これは 32 bit でコンパイルした dll が混じっていると出るエラーのようなので、以下のいずれかで対処する。


  • 64 bit でコンパイルし直す(他所のライブラリを使用している場合は 64 bit 版に差替える)
  • IIS の Application Pool を "ASP.NET 2 Classic" に選択し、「詳細設定」で "32 ビット アプリケーションの有効化 " を "True" にする

上記のいずれかで対応する。