2013-04-12 93 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”的引用。 –