1

サーバー上の Web ブラウザーで Web サービスにアクセスして Web サービスを呼び出すことができますが、テスト クライアントから SOAP クライアント経由で呼び出すと、次の例外が発生します。

「タイプ 'System.ComponentModel.INotifyPropertyChanging' は、参照されていないアセンブリで定義されています。アセンブリ 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' への参照を追加する必要があります。」

..残りのスタック トレースは以下のとおりです。

   at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)

   at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)

   at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)

   at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings, Type type)

   at System.Web.Services.Protocols.SoapServerType..ctor(Type type, WebServiceProtocols protocolsSupported)

   at System.Web.Services.Protocols.SoapServerProtocol.Initialize()

   at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

   --- End of inner exception stack trace ---

これで、この System.dll が参照として Web サービス プロジェクトに追加され、ローカルにコピーするように設定されました。そのdllはサーバーのGACにはありません(ただし、私の開発サーバーにはローカルにあります)-それが問題になりますか?

web.config に次のセクションがあります。

<add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />

理解できません?dll が bin フォルダーにあり、その参照がプロジェクトに追加されているだけでなく、そこにある場合、何について不平を言っていますか?

これらは、私の bin フォルダー内の dll です。

Devart.Data.dll
Devart.Data.Linq.dll
Devart.Data.Oracle.dll
Devart.Data.Oracle.Linq.dll
Oracle.DataAccess.dll
System.ComponentModel.Composition.dll
System.ComponentModel.DataAnnotations.dll
System.Configuration.dll
System.Data.dll
System.Data.Entity.dll
System.dll
System.Runtime.Serialization.dll
System.Web.dll
System.Web.Services.dll
System.Xml.dll

私は本当に困惑しています。なぜこのエラーが発生するのか誰かが知っていますか?

4

1 に答える 1

0

プロジェクトで、参照を見て、system.dll 参照のパスを見てください。パスは、GAC バージョンまたは bin バージョンを参照していることを示していますか? パスが GAC バージョンを指している場合は、参照を削除して、bin バージョンへの参照を再度追加する必要があります。

于 2013-04-12T18:01:38.080 に答える