1.先创建一个web工程
2. 添加一般处理程序(简单json交换数据)
3.编写代码,导入引用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;
using WebApplication1.entity;
using System.Web.Script.Serialization;
namespace WebApplication1
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string ipList=context.Request.Params["ipList"];
//string[] args = new string[] { "192.168.5.244:4370" };
string[] args = ipList.Split(new Char[] { ',' });
context.Response.ContentType = "text/json";
context.Response.Write(getInfo(args));
//context.Response.Write("Hello World");
}
public bool IsReusable
{
get
{
return false;
}
}
private string getInfo(string[] args)
{
//Create Standalone SDK class dynamicly.
zkemkeeper.CZKEMClass axCZKEM1 = new zkemkeeper.CZKEMClass();
//args = new string[] {"192.168.5.244:4370" };
ArrayList ret = new ArrayList();//所有考勤数据
ArrayList disconnect = new ArrayList();//所有断线机器
BaseResponse response = new BaseResponse();
foreach (string arg in args)
{
String total = arg.Trim();
//连接所有考勤机
String ip = null;
String port = "4370";//端口默认4370
int idx = total.IndexOf(":");
if (idx == -1)
{
ip = arg.Trim();
}
else
{
port = total.Substring(idx + 1);
ip = total.Substring(0, idx);
}
bool bIsConnected = axCZKEM1.Connect_Net(ip, Convert.ToInt32(port));
int iMachineNumber = 1;//In fact,when you are using the tcp/ip communication,this parameter will be ignored,that is any integer will all right.Here we use 1.
if (!bIsConnected)
{
disconnect.Add(ip + ":" + port);
continue;
}
//Console.WriteLine(bIsConnected + "连接!!!!!");
axCZKEM1.EnableDevice(iMachineNumber, false);//disable the device
/***************************************读取所有用户信息********************************************/
Hashtable userMap = new Hashtable();
string sdwEnrollNumber = "";
string name = "";
string password = "";
int privilege = 0;
bool enabled = true;
if (axCZKEM1.ReadAllUserID(iMachineNumber))
{
while (axCZKEM1.SSR_GetAllUserInfo(iMachineNumber, out sdwEnrollNumber, out name, out password, out privilege, out enabled))
{
UserInfo userInfo = new UserInfo();
userInfo.userId = sdwEnrollNumber;
userInfo.userName = name;
userInfo.password = password;
userInfo.privilege = privilege;
userInfo.enabled = enabled ? 1 : 0;
userMap.Add(sdwEnrollNumber, userInfo);
}
}
/***************************************读取时间段内的登录数据********************************************/
sdwEnrollNumber = "";
int idwVerifyMode = 0;
int idwInOutMode = 0;
int idwYear = 0;
int idwMonth = 0;
int idwDay = 0;
int idwHour = 0;
int idwMinute = 0;
int idwSecond = 0;
int idwWorkcode = 0;
int idwErrorCode = 0;
int iGLCount = 0;
int iIndex = 0;
DateTime cur = DateTime.Now;
DateTime end = cur.AddDays(1);
DateTime start = cur.AddDays(-3);
string format = "yyyy-MM-dd HH:mm:ss";
if (axCZKEM1.ReadTimeGLogData(iMachineNumber, start.ToString(format), end.ToString(format)))//read all the attendance records to the memory
{
while (axCZKEM1.SSR_GetGeneralLogData(iMachineNumber, out sdwEnrollNumber, out idwVerifyMode,
out idwInOutMode, out idwYear, out idwMonth, out idwDay, out idwHour, out idwMinute, out idwSecond, ref idwWorkcode))//get records from the memory
{
iGLCount++;
//Console.WriteLine(iGLCount.ToString());
//Console.WriteLine(sdwEnrollNumber);//modify by Darcy on Nov.26 2009
//Console.WriteLine(idwVerifyMode.ToString());
//Console.WriteLine(idwInOutMode.ToString());
//Console.WriteLine(idwYear.ToString() + "-" + idwMonth.ToString() + "-" + idwDay.ToString() + " " + idwHour.ToString() + ":" + idwMinute.ToString() + ":" + idwSecond.ToString());
//Console.WriteLine(idwWorkcode.ToString());
//Console.WriteLine(sdwEnrollNumber + " " + idwVerifyMode + " "+idwInOutMode+" "+idwYear.ToString() + "-" + idwMonth.ToString() + "-" + idwDay.ToString() + " " + idwHour.ToString() + ":" + idwMinute.ToString() + ":" + idwSecond.ToString()+" ");
AttendanceMachineLogin attendanceMachineLogin = new AttendanceMachineLogin();
string loginTime = idwYear.ToString() + "-" + idwMonth.ToString() + "-" + idwDay.ToString() + " " + idwHour.ToString() + ":" + idwMinute.ToString() + ":" + idwSecond.ToString();
attendanceMachineLogin.ip = ip + ":" + port;
attendanceMachineLogin.userId = sdwEnrollNumber;
attendanceMachineLogin.inOutMode = idwInOutMode;
attendanceMachineLogin.verifyMode = idwVerifyMode;
attendanceMachineLogin.loginTime = loginTime;
if (userMap[sdwEnrollNumber] != null)
{
UserInfo userInfo = (UserInfo)userMap[sdwEnrollNumber];
attendanceMachineLogin.privilege = userInfo.privilege;
attendanceMachineLogin.userName = userInfo.userName;
ret.Add(attendanceMachineLogin);
}
iIndex++;
}
}
/******************************************转成json字符串********************************************/
//axCZKEM1.GetLastError(ref idwErrorCode);
axCZKEM1.EnableDevice(iMachineNumber, true);//enable the device
axCZKEM1.Disconnect();
}
response.machineLogins = ret;
response.machineDisconnect = disconnect;
//JsonConvert
JavaScriptSerializer serializer = new JavaScriptSerializer();
//JSON序列化
string result = serializer.Serialize(response);
return result;
}
}
}
4.生成部署包
4.1生成zip部署包
4.2或者发布到文件系统
Asp.net 网站发布之文件系统方式 - 德玛西亚冲锋 - 博客园
5.配置IIS
5.1开启ASP .NET3.5服务
ISS部署网站--HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。 - 姜小珂 - 博客园
5.2新建一个网站并选择引用池
因为是vs2010默认创建32位服务,所以应用要如上设置
部署包解压后进入该目录,将该目录下的所有文件复制到其他一个目录。
在右键添加引用程序,选择该目录,或者右键——>部署——>导入应用程序,直接选择上面的zip文件