2009-04-20 7 views
3

私は自分のプログラムに小さなWebサーバーを埋め込む過程にあります。 これは比較的簡単です。生のhtmlファイルとjavascriptだけを提供する必要があります。c#でのHttpライブラリ

私は基本的な配管を得るために使用できるいくつかの非同期ネットワークコードがあります。 httpを理解できるライブラリはありますか?

私は、パス、クエリ文字列、ポスト変数を抽出し、それに応じて応答できるようにhttpリクエストを解析できる必要があります。

SSL、クッキー、認証の必要はありません。

私はいくつかのWebサーバライブラリを試しましたが、ほとんど満足していませんでした。ほとんどの場合、プログラムのUIと対話するワーカースレッドが使用されていました。

理想的には、http要求文字列\ streamを受け取り、構造体またはオブジェクトを返すライブラリが必要です。

答えて

6

HttpListenerはあなたが望むようにするかもしれないと思います。

EDIT:(念のコードサンプルを追加しました)

ここでは、(非同期メソッドを使用して)、それを使用する方法を示すために少しのコードです。 ContextCallback(IAsyncResult result)

// get the next request 
HttpListenerContext context = _server.EndGetContext(result); 

// write this method to inspect the context object 
// and do whatever logic you need 
HandleListenerContext(context); 

// is the server is still running, wait for the next request 
if (_Server.IsListening) 
{ 
    _server.BeginGetContext(new AsyncCallback(ServerThread), null); 
} 

HttpListener _server = new HttpListener(); 

// add server prefix (this is just one sample) 
_server.Prefixes.Add("http://*:8080"); 

// start listening 
_server.Start(); 

// kick off the listening thread 
_Server.BeginGetContext(new AsyncCallback(ContextCallback), null); 

、その後、あなたはあなたに利用できる持っているものについての詳細HttpListenerContextを見てみましょう、しかし、主なものは、おそらくRequest財産になります。

2

System.Net名前空間のクラスを使用しないのはなぜですか?特にHttpListener

+1

"このクラスは、Windows XP SP2またはWindows Server 2003オペレーティングシステムを実行しているコンピュータでのみ使用できます。" –