2017-05-11 22 views
0

私はB/Sアプリケーションを持っています。http_responseによって送信されたが、テキストとして開かれたhtml#

private static void httpRequestHandler(httpListenerContext ctx){ 
    //check if it's a request for files 
    if(ctx.Request.Url.AbsolutePath.Length > 0){ 

     //read the file into byte array "buffer" 
     string path = _appFilePath + ctx.Request.Url.AbsolutePath.Replace('/','\\'); 
     byte[] buffer; 
     try{ 
     FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); 
     FileInfo info = new FileInfo(path); 
     buffer = new byte[info.Length]; 
     fs.Read(buffer, 0, Convert.ToInt32(info.Length)); 
     fs.Close(); 
     } 
     catch{ 
     return; 
     } 

     //send data back 
     ctx.Response.Headers.Add("HttpResponseStatus:OK"); 
     ctx.Response.ContentLength64 = buffer.Length; 
     ctx.Response.ContentType = "HTML"; 
     ctx.Response.OutputStream.Write(buffer, 0, buffer.Length); 
     ctx.Response.OutputStream.Flush(); 
     ctx.Response.Close(); 
    } 
} 

とhtmlファイル:

<!DOCTYPE html> 

<html lang="en" xmlns="http:/www.w3.org/1999/xhtml"> 
    <head> 
     <meta charset="utf-8"/> 
     <meta http-equiv="X-UA-Compatible" content="IE=chrome" /> 
     <meta name="viewport" content="width=device-width, initial-scale=1" /> 
    </head> 

    <body>....</body> 
</html> 

、ブラウザで私はアドレスとしてを入力し、サーバー側で

、私は、ポート35349上の httpListenerリッスンなど httpRequestHandlerを持っています http://192.168.1.16:35349/test.html、それは私にテキストとしてのHTMLを示しています!

問題は次のとおりです。私はアドレスを入力した後にHTMLページが必要ですが、テキストページは入力しません。どのように私のコードを変更する必要がありますか?あなたがtext/htmlを使用するか、それがデフォルトだと、単に完全にその行を削除したいと思うよう

答えて

1

ContextTypeヘッダは、実際に、応答を表す有効なMIMEタイプを期待:

// Either remove this line from your current code or set it to "text/html" 
ctx.Response.ContentType = "text/html"; 
+0

、それは動作しません取り外し、はい、それは "text/html"で動作します。どうもありがとう! –

関連する問題