2011-12-31 16 views
0

私が働いている古典的なASP VBSサイトのために、IIS 7でWindows 7にローカルサーバーをセットアップしました。iis7、classic asp;タイプミスマッチエラー

ページに「タイプが一致しません」というエラーが表示されます。これは、元のサーバーで発生しません(IIS、Windows 2008の7)

関連コード:

if myRS("age") = 10 then 
  • フィールドの値は、デバッガでチェック空文字列で、またエラー状態 "文字列 '
  • ASPファイルのデータベース&は、本番サイトの正確なコピーです。
  • パブリックサイトとローカルサイトの両方でエラーは再開されません。
  • プロダクションサーバーは、ローカルのものがExpress EditionのMS-SQL 2008 R2 Webエディションです。

私はコードがひどく書かれていることを知っています。しかし、どうやってローカルサーバがこのようなエラーを出し、パブリックサーバはできないのでしょうか?私は、バリアント型を使って比較を行っていると思うので、サブタイプはエラーなしで自動的に評価されるべきですか?

+0

'myRS(" age ")の戻り値の型も、コードが動作する元のサーバー上の空文字列ですか? –

+0

ダーリン、ありがとう、同じデータ、同じコード.. – SuperDuck

答えて

3

これは、 "..intrinsic properties .."という問題が原因と考えられます。私の推測では、あなたのプロダクションサーバは既にそれを許可するために "固定"されており、あなたのローカルサーバのセットアップはこれまでに "これを修正する"必要性を経験したことがありません。

あなたはここで多くを読むことができます:のうち、

http://blogs.msdn.com/b/distributedservices/archive/2010/04/28/iis-intrinsic-properties-are-disabled-by-default-on-windows-2008-and-windows-2008-r2.aspx

あなたは、レコード/ ADOオブジェクトを作成するためにCreateObjectを使用しました、そしてそれが原因この問題の影響を受けていますマイクロソフトは、デフォルトとしてそれらを無効にしますボックス構成。

はもう少しここに読むものの

http://support.microsoft.com/default.aspx?scid=kb;EN-US;287422

を..あなたは、単にそれが仕事をしたい場合は、あなたが最初のリンクを読むことができます。

+0

それは、ありがとうnonym - )生産サーバー問題だった..非常に悪い習慣... – SuperDuck

0

異なるデータソースまたはドライバで、同じように見えるデータがわずかに異なる場合があります。

たとえば、空の文字列、空の文字列またはnullです。

myRS(「年齢」)の値をログに記録できるように書き直してください。

+0

シラーズありがとう、私は詳細を質問に更新しました。 – SuperDuck

0

私はこれを修正して、Nonymが言及している問題を解決することができます。私の提案は、コードを推測させるのではなく、明示的に呼び出すようにコードを更新することでした。例えば、

変更この:この中へ

if myRS("age") = 10 then 

if myRS("age").Value = 10 then 

この私が正しくリコール場合は具体的な例は、現時点では、なぜ気にしていないものの、他の利点をも持つことができます。運が良かった!

+0

ええ、それは数字が文字列フィールドに保持されている良いデザインでもありません。しかし今度は私が割り当てた巨大なサイトですが、ひどくコード化されています。私は時間にそれを書き直します。しかし、問題は、プロダクションとローカルサーバーが異なる動作を示すことでした。 – SuperDuck

0

ADOレコードセットの問題のようです。 myRS( "age")の値を出力し、何も返さない場合やエラーが発生した場合は、接続文字列でSQLドライバを変更するか、CStr(myRS( "age"))= CStr(10)を使用してみてください。

関連する問題