我确定这是RTFM,但我无法弄清楚我应该选择哪种FM。
我正在尝试提供JNLP(Java Web Start)文件(这是一种XML格式),ASP.Net坚持将HTML代码附加到响应主体。
更多细节:我有一个.aspx文件和一个随附的.aspx.cs文件。这些是使用“新页面”向导生成的。在.aspx.cs文件的Page_Load()
中,我生成了一些XML,执行Response.ContentType = "application/x-java-jnlp-file"
,你知道这个练习。
然而,.aspx文件包含:
<%@ Page Language="C#" CodeBehind="MyPage.aspx.cs" Inherits="MyProj.MyPage" EnableSessionState="False" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
此代码附加到输出。
我该如何避免这种情况?我尝试从Response.End()
调用Page_Load()
,但据报道它是邪恶的,它引发了令人讨厌的异常。 Response.Close()
更糟糕,打破了HTTP。我也试过简单地删除正文中的所有HTML,但ASP然后抱怨它需要一个<head runat="server">
来称为“主题CSS”(我不确定这意味着什么)。
任何线索?
谢谢!
答案 0 :(得分:4)
强制性Use a Handler。
这为您提供了直接输出信息所需的所有控制权。这篇文章甚至给出了一个输出图像的例子。
答案 1 :(得分:1)
将页面设为:
<%@ Page Language="C#" CodeBehind="MyPage.aspx.cs" Inherits="MyProj.MyPage" EnableSessionState="False" %>
删除页面中的其余HTML并按照海报的建议删除并执行Response.Clear()..
重要在
结束后删除所有内容<%@ Page Language="C#" CodeBehind="MyPage.aspx.cs" Inherits="MyProj.MyPage" EnableSessionState="False" %> declaration.
答案 2 :(得分:1)
您可以通过将EnableTheming =“false”和Theme =“”添加到Page指令
来关闭主题所以你的页面会变成
<%@ Page Language="C#" CodeBehind="MyPage.aspx.cs"
Inherits="MyProj.MyPage" EnableSessionState="False"
EnableTheming="false" Theme=""%>
在任何输出之前添加Response.Clear()应该按预期工作。然而布拉德的评论很有用,这对HTTP Handler
来说是完美的答案 3 :(得分:0)
使用Response.Clear()
或只是从页面中删除它!