c# – UploadFile:WCF测试客户端不支持此操作,因为它使用类型Cl
发布时间:2020-12-15 21:43:24 所属栏目:百科 来源:网络整理
导读:我对WCF服务相当新,并希望得到一些帮助.我正在尝试将WCF作为服务运行,并且在不同的计算机上具有ASP.net客户端,能够通过连接到WCF服务将文件上载到它. 我正在使用一个简单的上传设置(从here开始)对它进行测试,如果我只是将WCF服务作为“dll”引用它可以正常工
我对WCF服务相当新,并希望得到一些帮助.我正在尝试将WCF作为服务运行,并且在不同的计算机上具有ASP.net客户端,能够通过连接到WCF服务将文件上载到它.
我正在使用一个简单的上传设置(从here开始)对它进行测试,如果我只是将WCF服务作为“dll”引用它可以正常工作但是如果我尝试在它作为WCF服务运行它会给我一个错误的“UploadFile” “声明它不受支持的方法. 方法名称上带有红色X的确切消息:WCF测试客户端不支持此操作因为它使用类型FileUploadMessage. 我首先在Visual Studio 2012中创建一个WCF服务应用程序,并在我的界面中具有以下内容(IUploadService.cs): [ServiceContract] public interface IUploadService { [OperationContract(IsOneWay = true)] void UploadFile(FileUploadMessage request); } [MessageContract] public class FileUploadMessage { [MessageBodyMember(Order = 1)] public Stream FileByteStream; } 它实现如此(UploadService.svc.cs): public void UploadFile(FileUploadMessage request) { Stream fileStream = null; Stream outputStream = null; try { fileStream = request.FileByteStream; string rootPath = ConfigurationManager.AppSettings["RootPath"].ToString(); DirectoryInfo dirInfo = new DirectoryInfo(rootPath); if (!dirInfo.Exists) { dirInfo.Create(); } // Create the file in the filesystem - change the extension if you wish,// or use a passed in value from metadata ideally string newFileName = Path.Combine(rootPath,Guid.NewGuid() + ".jpg"); outputStream = new FileInfo(newFileName).OpenWrite(); const int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int bytesRead = fileStream.Read(buffer,bufferSize); while (bytesRead > 0) { outputStream.Write(buffer,bufferSize); bytesRead = fileStream.Read(buffer,bufferSize); } } catch (IOException ex) { throw new FaultException<IOException>(ex,new FaultReason(ex.Message)); } finally { if (fileStream != null) { fileStream.Close(); } if (outputStream != null) { outputStream.Close(); } } } // end UploadFile 从它的外观应该工作,但从我通过查看几个stackoverflow和其他论坛问题的理解,似乎WCF不支持流,即使我们可以有类型流的绑定.我对此感到困惑,以及我做错了什么. 谢谢您的帮助. 解决方法
在与我的
blog上的Adam沟通之后,我得到了代码,我意识到我正在以错误的方式测试它.一切都正确实现,但使用WCF测试客户端搞砸了.只需启动项目并通过将其添加为“Service.svc”的Web引用来消费它就可以完美地工作.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |