Asp.net Web服务模型

Asp.net Web服务模型,asp.net,web-services,serialization,soap,Asp.net,Web Services,Serialization,Soap,我有一个站点(MySite.com)/1个Web服务(WebService.MySite.com)和一个公共库(LibCommon) 公共库包含一个模型,例如UserModel=LibCommon.UserModel web服务有一个方法“Void CheckUser(LibCommon.UserModel model)” 但是,当我将'WebService'引用添加到'MySite.com'时,该方法会发生更改,看起来像是'Void CheckUser(WebService.MySite.co

我有一个站点(MySite.com)/1个Web服务(WebService.MySite.com)和一个公共库(LibCommon)

公共库包含一个模型,例如UserModel=LibCommon.UserModel

web服务有一个方法
“Void CheckUser(LibCommon.UserModel model)”

但是,当我将
'WebService'
引用添加到
'MySite.com'
时,该方法会发生更改,看起来像是
'Void CheckUser(WebService.MySite.com.UserModel)

所以我认为公平的是,我可以将一个对象投射到另一个对象,因为它们是相同的,但是.NET说我不能这样做

这有什么办法吗


干杯,

注意这是为WCF而不是为ASMX web服务:

您不能直接将原始数据类强制转换为WCF服务引用向导生成的代理类。但是,您可以在客户端中重用原始数据类:

  • 添加包含传输对象的库引用(即
    LibCommon
    )作为对服务(
    WebService
    )和客户端(
    Mysite.com
    )的引用。在客户端上添加服务引用时,请选择“高级”选项卡,然后选择“在引用的程序集中重用类型”。这将重用公共数据传输类,而不是使用代理复制类型
但是请注意,通过消除代理数据类,您将在客户机和服务器之间引入直接耦合-只有在您能够控制客户机和服务器的w.r.t.版本控制问题等(例如,能够同时部署客户机和服务器的新版本)时,才应这样做


另外,也可以通过将服务器端服务契约接口移动到单独的公共程序集中,然后使用诸如或之类的技术来消除共享服务接口。

注意,这是针对WCF的,而不是针对ASMX web服务:

您不能直接将原始数据类强制转换为WCF服务引用向导生成的代理类。但是,您可以在客户端中重用原始数据类:

  • 添加包含传输对象的库引用(即
    LibCommon
    )作为对服务(
    WebService
    )和客户端(
    Mysite.com
    )的引用。在客户端上添加服务引用时,请选择“高级”选项卡,然后选择“在引用的程序集中重用类型”。这将重用公共数据传输类,而不是使用代理复制类型
但是请注意,通过消除代理数据类,您将在客户机和服务器之间引入直接耦合-只有在您能够控制客户机和服务器的w.r.t.版本控制问题等(例如,能够同时部署客户机和服务器的新版本)时,才应这样做


另外,也可以通过将服务器端服务契约接口移动到单独的公共程序集中,然后使用诸如或之类的技术来消除共享服务接口。

您需要将WebServiceNameSpace.CommonLib对象作为参数传递。再次查看我的代码,我使用的是@StuartLC方式。您使用的是WCF(例如,svc)还是Web服务(.asmx)?我使用的是Web服务这可能会有所帮助:尽管如果您可以将代码移动到像WCF这样的较新技术,或者您需要将WebServiceNameSpace.CommonLib对象作为参数传递,您可能会发现优势。再次查看我的代码,我使用的是@StuartLC方式。您使用的是WCF吗(例如,svc)或Web服务(.asmx)?我正在使用webservices这可能会有所帮助:尽管如果您可以将代码移动到诸如WCF或