Fra*_*man 1 c# iis integration-testing
我有一些集成测试,我想验证某些要求是针对第三个[艺术网络服务器.我以为我会用一个简单记录调用它的存根服务器替换第三方服务器.调用不需要成功,但我确实需要记录所发出的请求(主要是路径+查询字符串).
我正在考虑使用IIS.我可以1)设置一个空站点,2)修改系统的主机文件以将请求重定向到该站点3)在每个测试结束时解析日志文件.
这是有问题的,因为IIS不会立即写入日志文件,并且文件会连续写入.我需要找到文件,在测试前读取内容,在测试后等待不确定的时间,读取更新内容等.
有人会想到更简单的方法吗?
您可以使用System.Net.HttpListener(MSDN LINK).
它作为嵌入式WebServer工作,这意味着您甚至可以在不必解析日志文件的情况下即时检查访问.
我最近在我的代码中使用的一个类:
class Listener
{
private HttpListener listener = null;
public event EventHandler CommandReceived;
public Listener()
{
this.listener = new HttpListener();
this.listener.Prefixes.Add("http://localhost:12345/");
}
public void ContextReceived(IAsyncResult result)
{
if (!this.listener.IsListening)
{
return;
}
HttpListenerContext context = this.listener.EndGetContext(result);
this.listener.BeginGetContext(this.ContextReceived, this.listener);
if (context != null)
{
EventHandler handler = this.CommandReceived;
handler(context, new EventArgs());
}
}
public void Start()
{
this.listener.Start();
this.listener.BeginGetContext(this.ContextReceived, this.listener);
}
public void Stop()
{
this.listener.Stop();
}
}
Run Code Online (Sandbox Code Playgroud)