0

ASP.NET アプリケーションを VS2010 から IIS 6.0 Web サーバーに移動しようとすると、エラーが発生します。このエラーは、アプリがログイン ページで新しい SQLXMLCommand オブジェクトを初めて作成しようとしたときに発生します。

ログイン ページに移動して有効な資格情報を入力すると、null 参照例外がスローされたというエラーが表示されました。例外を調査したところ、別の例外がスローされてキャッチされ、コードの後半で null 参照例外が発生したことが判明しました。

例外をスローする対応するコード行:

New SqlXmlCommand(conn.ConnectionString & ";Provider=SQLOLEDB.1;")

以下の問題を引き起こす例外:

次のエラーが原因で、CLSID {83D0FC3E-8B31-4B35-A1B2-346BA3954514} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: 80040154 クラスが登録されていません (HRESULT からの例外: 0x80040154 (REGDB_E_CLASSNOTREG))。" System.Runtime.InteropServices.COMException (0x80040154): CLSID {83D0FC3E-8B31-4B35-A1B2-346BA3954514} を持つコンポーネントの COM クラス ファクトリの取得は、次のエラーが原因で失敗しました: 80040154 クラスが登録されていません (HRESULT からの例外: 0x80040154 (REGDB_E_CLASSNOTREG)) System.RuntimeTypeHandle で.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) at System.RuntimeType.Microsoft.Data.SqlXml.SqlXmlCommand.fillManagedWrapper() で Microsoft.Data.SqlXml.SqlXmlCommand.construct( ) Microsoft.Data.SqlXml.SqlXmlCommand..ctor(String cnString) at dialog.login.UserLogin(String username, St 2011-Jun-15 11:40:52.104 CriticalError N/A 58 "http://sigappsdv/dialogue /login.aspx" dialog.login.UserLogin ---> "Webservice failed 2 at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(ブール publicOnly、Microsoft.Data.SqlXml.SqlXmlCommand.fillManagedWrapper() の System.Activator.CreateInstance(型の種類、ブール値の nonPublic) の System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly、Boolean skipVisibilityChecks、Boolean skipCheckThis、Boolean fillCache) の Boolean skipCheckThis、Boolean fillCache) Microsoft.Data.SqlXml.SqlXmlCommand.construct() で Microsoft.Data.SqlXml.SqlXmlCommand..ctor(文字列 cnString) で dialog.login.UserLogin(文字列ユーザー名、文字列パスワード、文字列 lang)"Microsoft.Data.SqlXml.SqlXmlCommand..ctor(String cnString) での construct() dialog.login.UserLogin(String ユーザー名、String パスワード、String 言語) で"Microsoft.Data.SqlXml.SqlXmlCommand..ctor(String cnString) での construct() dialog.login.UserLogin(String ユーザー名、String パスワード、String 言語) で"

問題をさらに詳しく調べると、例外は Web サーバーでのみスローされます。localhost を使用している場合、例外はスローされません。Microsoft.Data.SqlXml.dll への参照が欠落している可能性がありますが、Web サーバーではなく localhost で動作していたためです。展開プロジェクトにdll参照を含め、それがbinフォルダーに追加されていることを確認して、これを修正しようとしましたが、役に立ちませんでした。

助けてくれてありがとう。

編集:

SQLXML 4.0 は Web サーバーにインストールされていませんでした。これは、私のマシンのベースライン インストールの一部でした。

4

1 に答える 1

3

マネージ SQLXML アセンブリに加えて、ネイティブ SQLXML ライブラリをサーバーにインストールする必要があります。

SQLXML ライブラリのドキュメントはhttp://msdn.microsoft.com/en-us/library/ms171779.aspxにあり、インストーラはhttp://www.microsoft.com/download/en/details.aspxにあります。 ?displaylang=ja&id=8824

于 2011-06-15T16:08:06.210 に答える