C#windows服务:以图片、CSS和JS作为响应的HTML页面

C#windows服务:以图片、CSS和JS作为响应的HTML页面,c#,html,css,C#,Html,Css,我正在学习构建一个windows服务,但它需要从浏览器向服务器发送请求(例如localhost:8081/index)。因此,HTTP响应应该包含一个HTML页面。 当我双击index.HTML文件时,HTML页面看起来不错,但是当我从web浏览器请求时,它丢失了所有CSS和js文件我在chrome中打开开发人员工具,发现所有CSS和JS文件都已损坏,并且包含我HTML页面中的代码(奇怪)。 我使用HttpListenerContext类侦听请求,然后打开index.html文件和used f

我正在学习构建一个windows服务,但它需要从浏览器向服务器发送请求(例如localhost:8081/index)。因此,HTTP响应应该包含一个HTML页面。 当我双击index.HTML文件时,HTML页面看起来不错,但是当我从web浏览器请求时,它丢失了所有CSS和js文件我在chrome中打开开发人员工具,发现所有CSS和JS文件都已损坏,并且包含我HTML页面中的代码(奇怪)。

我使用HttpListenerContext类侦听请求,然后打开index.html文件和used file.ReadAllBytes(文件)。在编写响应时,我使用了以下代码:

responseBytes = File.ReadAllBytes(file);
response.ContentLength64 = responseBytes.Length;
await response.OutputStream.WriteAsync(responseBytes, 0, responseBytes.Length); 
response.OutputStream.Close();

有人能帮我弄清楚为什么会发生这种情况吗?

所以当我追踪代码时,我自己找到了答案。当请求localhost/index从浏览器进入时,GET方法将首先获取index.html,然后还有其他GET请求进入CSS、image和JS(奇怪的是,我以前没有看到后面的请求)


然后我更新了处理程序,以编写包含CSS、图像和JS文件的响应。现在一切都很好。

您要么将所有内容打包到html中,要么将.css、.js等托管到其他地方,因为您只将html写入输出。如果您只参考.css和.js文件,您的浏览器将如何获得这些资源?您的HttpListenerContext接收对这些资源的请求,但只是输出html。我知道您的意思,但我公司的代码库中有一个工作示例。除了HTML文件外,它似乎没有执行额外的步骤来加载其他资源。很可能您的
HttpListenerContext
正在侦听向该域发出的任何请求,并提供相同的内容,无论路径/文件名如何。如果看不到更多的设置,就不可能说。嗨,迈克,代码结构很简单,首先打开侦听器,等待请求。然后基于HttpMethod(例如GET),我读取Url并获取web内容(例如index.html)。然后我写下响应并返回。这就是你要问的吗?