我已经查看了 SO 和其他地方,并看到了与此相关的问题以及一些对我来说仍然没有意义的答案。
我正在重构我的工作 VStudio 2010 解决方案,它具有:
- 一个带有 ASMX 网络服务的项目
- 代理类的另一个单独项目(这里没有代码,除了由Add Web Reference生成的代码
- 客户端的另一个单独项目(包含对 ProxyClass.dll 的引用
新的 VStudio 2010 解决方案具有:
- 一个WCF类型的服务库项目,用于合约本身(IFileService.cs) 一个WCF类型的服务库项目,用于合约的执行(FileService.cs)
- 代理类的另一个单独项目(这里没有代码,除了添加服务参考生成的代码
- 客户端的另一个单独项目(包含对 WCFProxyClass.dll 的引用)
这是以 3 个输出参数结尾的合约(并且相同的实现是相同的顺序):
[ServiceContract(Name = "IFileService", Namespace = "http://www.cbmiweb.com/TrimWCF/2011/11")]
public interface IFileService
{
[OperationContract]
public string DownloadFile(string trimURL
, string TrimRecordNumber
, string CallerPC
, string RequestorID
, out byte[] docContents
, out string returnFiletype
, out string returnFilename)
{
这是我的代理类项目中生成的添加服务引用:
public string DownloadFile(
out byte[] docContents
, out string returnFiletype
, out string returnFilename
, string trimURL
, string TrimRecordNumber
, string CallerPC
, string RequestorID)
{
return base.Channel.DownloadFile(out docContents, out returnFiletype, out returnFilename, trimURL, TrimRecordNumber, CallerPC, RequestorID);
}
我已经阅读了从“你不能在 WCF 中使用参数”到“你不应该使用添加服务引用而是使用 svcutil.exe”到“参数的顺序无关紧要......它仍然可以工作”的答案。
我对在这里做什么感到困惑(以及我做错了什么导致这个重新安排的订单以及为什么会发生这种情况)。