2013-04-12 52 views
1

我可以通過訪問它在Web瀏覽器調用服務器上我的web服務,但是當我通過把它稱爲「類型‘System.ComponentModel.INotifyPropertyChanging’在沒有引用的組件定義」來自我的測試客戶端的Soap客戶端,我得到以下異常:錯誤調用webservice時:

「類型'System.ComponentModel.INotifyPropertyChanging'在未引用的程序集中定義,必須添加對程序集'System,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'。「

..rest堆棧跟蹤的是以下。

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 

我真的難倒了,沒有人知道爲什麼我收到這個錯誤?在您的項目,看看你的引用,看看對System.Dll參考的路徑

+0

在您的項目,看看你的引用,看看對System.Dll參考的路徑,在路徑表明您引用的GAC版本或箱版本?如果路徑指向GAC版本,則需要刪除引用並將引用讀取到bin版本。 –

+0

迪倫,我相信它引用的GAC版本,但選擇複製到本地並將其放入到bin文件夾,你是說把它作爲有我的項目的一部分,然後直接將其指向的參考?這肯定會有幫助,因爲我可能無法將它添加到服務器上的gac。我不知道這個工作是否會在星期一開始,但請把它當作潛在的答案,這樣我就可以接受了!謝謝! –

+0

是的,它保留下來,並引用它,而不是GAC版本,它會與你的項目旅行,當你部署,它會在服務器 –

回答

0

,在路徑表明您引用的GAC版本或箱版本?如果路徑指向GAC版本,則需要刪除引用並重新添加對bin版本的引用。

+0

它不過是在工作的時候添加引用,瀏覽到該DLL bin文件夾,它仍然具有指向「C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5 \ System.dll」的引用。 –