WCF学习了很久,应用的并不是特别多,临时需要用的话还是很不错的选择。毕竟新技术。
一、首先是服务和契约定义,以及寄宿定义,大致截个图:
![](https://i-blog.csdnimg.cn/blog_migrate/366dba9f1ff37dfab716428722ed348f.png)
1、服务跟契约定义
[ServiceContract]
public interface IServiceFile
{
/// <summary>
/// 上传操作
/// </summary>
/// <param name="fileInfo"></param>
/// <returns></returns>
[OperationContract]
CustomFileInfo UpLoadFileInfo(CustomFileInfo fileInfo);
/// <summary>
/// 获取文件操作
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
[OperationContract]
CustomFileInfo GetFileInfo(string fileName);
}
public class ServiceFile : IServiceFile
{
public CustomFileInfo UpLoadFileInfo(CustomFileInfo fileInfo)
{
// 获取服务器文件上传路径
string fileUpLoadPath = System.Web.Hosting.HostingEnvironment.MapPath("~/UpLoadFile/");
// 如需指定新的文件夹,需要进行创建操作。
Console.WriteLine("1");
// 创建FileStream对象
FileStream fs = new FileStream(fileUpLoadPath + fileInfo.Name, FileMode.OpenOrCreate);
Console.WriteLine("2");
long offSet = fileInfo.OffSet;
// 使用提供的流创建BinaryWriter对象
var binaryWriter = new BinaryWriter(fs, Encoding.UTF8);
binaryWriter.Seek((int)offSet, SeekOrigin.Begin);
binaryWriter.Write(fileInfo.SendByte);
fileInfo.OffSet = fs.Length;
fileInfo.SendByte = null;
binaryWriter.Close();
fs.Close();
Console.WriteLine("2");
return fileInfo;
}
public CustomFileInfo GetFileInfo(string fileName)
{
string filePath = System.Web.Hosting.HostingEnvironment.MapPath("~/UpLoadFile/") + fileName;
if (File.Exists(filePath))
{
var fs = new FileStream(filePath, FileMode.OpenOrCreate);
CustomFileInfo fileInfo = new CustomFileInfo
{
Name = fileName,
OffSet = fs.Length,