这是我第一次使用网络服务,所以问题可能有点基础。无论如何,我有一个web服务作为我们供应商网站的代理。它简化了我们通常不得不做的“屏幕刮擦”。 webservice函数如下所示:
namespace foo { public class MyService : WebService { [WebMethod] public string UploadFile(System.IO.FileStream fileToUpload) { return _obj.Upload(fileToUpload); } } }
当您尝试向该方法提供该方法要求的FileStream时,客户端会抛出错误。在某个地方的编译中,webservice将参数的类型从System.IO.FileStream更改为foo.FileStream。有没有人对我如何做到这一点有任何想法?
提前致谢!
答案 0 :(得分:0)
在.NET中,当您跨应用程序域进行调用时(就像您在这里一样),您无法传递特定于该应用程序域的数据。
这个的一般版本是,当您在两个单独的进程之间进行调用时,您不能向该进程发送特定的信息(即仅在该上下文中具有重要性)并期望它在另一个进程中具有重要性过程
这就是你在使用文件流做的事情。文件流是OS上特定于进程的文件的句柄。无法保证同一台计算机上的进程,更不用说其他计算机上的进程就能理解这一点。
这是一个Web服务,这正是您所拥有的情况,因为您在不同的计算机上有两个进程。
要解决此问题,您发送的数据必须是自包含的。在这种特定情况下,这意味着发送整个文件的内容。
您应该将参数更改为字节数组,然后在方法中适当地处理字节。
答案 1 :(得分:0)
ASMX Web服务不支持使用System.IO.Stream
或任何派生类型的Stream
。你需要WCF。