现在在本地机里找到你刚刚建立的.asmx文件,用浏览器来测试你的代码。Web函数的帮助会给你提示。然后,测试GetFile()函数,输入一个与你的服务器应用程序在同一个根目录下的文件名,按下Invoke按钮,将会看到以64位译码的字符串显示的文件内容。
为了测试PutFile()函数,我利用ASP.NET Web Matrix IDE(可用丛Microsof免费下载)建立了一个Web服务程序客户端,然后参照建立网络服务器客户端的相关教程利用网络代理服务器生成器(Web Service Proxy Generator)建立一个网络代理服务器(Web Service Proxy)。
生成一个新的ASP.NET Web页面,添加下面的代码到你新建的页面中:
<%@ Page Language="C#" Debug="true" %>
<script runat="server">
// Insert page code here
//
void Button1_Click(object sender, EventArgs e) {
string filename = "c:\\temp\\" + Guid.NewGuid().ToString() + ".tmp";
file1.PostedFile.SaveAs(filename);
System.IO.BinaryReader br = new
System.IO.BinaryReader(System.IO.File.Open(filename, System.IO.FileMode.Open,
System.IO.FileAccess.Read));
FileIO.FileRW frw = new FileIO.FileRW();
frw.Credentials = System.Net.CredentialCache.DefaultCredentials;
br.BaseStream.Position = 0;
Response.Write(br.BaseStream.Length);
byte[] buffer = br.ReadBytes(Convert.ToInt32(br.BaseStream.Length));
br.Close();
frw.PutFile(buffer,
file1.PostedFile.FileName.Substring(file1.PostedFile.FileName.LastIndexOf("\\")
+ 1));
}
</script>
<html>
<head>
</head>
<body>
<form enctype="multipart/form-data" runat="server">
<p>
<input id="file1" type="file" name="file1" runat="server"/>
</p>
<p>
runat="server" Text="Button">
</p>
<!-- Insert content here -->
</form>
</body>
</html>
你必须修改web.config文件的权限来模拟指定用户或得到你对ASP.NET机器上传文件目录(C:\temp\.)的完全的控制权限。如果你选择模拟就应注意这一点,我就是这样设置我的服务器,你需要通过身份许可来访问Web服务器,可以执行下面的代码行来实现:frw.Credentials = System.Net.CredentialCache.DefaultCredentials,如果你不这样做,可能会在调试上花费很多的时间。
客户端页面把上传的文件保存到本地的一个临时文件,然后打开一个缓冲区并上传缓冲池和上传文件(文件名放在FileName中)的名称一起到Web服务器。
