IIS配置网站(WebServices),局域网都能访问
前言
上篇说到在本机创建一个WebServices,用控制台应用程序调用WebServices的SayHello方法。
http://www.cnblogs.com/xw-yanger/p/3434297.html
今天说说把WebServices放到服务器(本机作为服务器)上,让局域网其他机子也能访问到。
跟上期一样,这次写了一个上传图片到服务器的WebServices
创建WebServices
代码也很简单,一个上传,一个下载:
//上传
[WebMethod]
public bool Up(byte[] data, string filename)
{
try
{
FileStream fs = File.Create("E:\\" + filename);
fs.Write(data, 0, data.Length);
fs.Close();
return true;
}
catch
{
return false;
}
}
//下载
[WebMethod]
public byte[] Down(string filename)
{
string filepath = Server.MapPath("E:\\") + filename;
if (File.Exists(filepath))
{
try
{
FileStream s = File.OpenRead(filepath);
return ConvertStreamToByteBuffer(s);
}
catch
{
return new byte[0];
}
}
else
{
return new byte[0];
}
}
写好之后,发布(详见上篇文章)
创建应用程序调用UpDownFileByWebServices
两button,一个textBox,一个openFileDialog1
Open单击事件代码:
string filter = "图片文件(*.jpg,*.gif,*.bmp)|*.jpg;*.gif;*.bmp";
openFileDialog1.Filter = filter;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = openFileDialog1.FileName;
//pictureBox1.Image = Image.FromFile(textBox1.Text);
}
UpLoad单击事件代码:
//保存到远程服务器
FileStream s = new FileStream(textBox1.Text, FileMode.OpenOrCreate);
UpDownFile.Service1 client = new UpDownFile.Service1();
client.Up(ConvertStreamToByteBuffer(s),"test.jpg");
将Stream流转换为byte数组的方法
//将Stream流转换为byte数组的方法
public byte[] ConvertStreamToByteBuffer(Stream s)
{
MemoryStream ms = new MemoryStream();
int b;
while ((b = s.ReadByte()) != -1)
{
ms.WriteByte((byte)b);
}
return ms.ToArray();
}
OK,代码写好之后,再配置网站,让WebServices跑起来,这样才能访问,而且配置很关键,注意方法。
添加网站
打开IIS,新建一个网站:
这里注意:主机名配置的是本机的局域网IP(我在这纠结了好久才弄好的)。
这里配置好之后启动网站,现在想让局域网能访问,我们还差最后一步:配置防火墙
配置防火墙
网上有方法
http://hi.baidu.com/xyrrwcom/item/93043153b966a1978d12edee
这里我也贴出来,这是win7的,XP的百度找找看。
1、开始---所有程序---管理工具---高级安全 Windows 防火墙。
2、在高级安全 Windows 防火墙的左边栏;选择“入站规则”。
3、在右边栏选择"新建规则“。
4、在弹出的窗口依次选择:选中端口---下一步---选中TCP以及特定本地端口;
5、填入要开放的端口号(这里填入80;当让也可以选择开放所有端口
6、下一步---选中允许连接---下一步---选中所有选项---下一步---填入名称(这里填入IIS)。
完毕。
至此,应该就没什么问题了,把exe文件放到别的机子上运行试试,然后在看本机E盘下面是不是有一个test.jpg文件了。