asp.net c #aspx if语句不起作用

时间:2012-08-07 14:24:13

标签: asp.net

我做了一些asp编程,但没有使用asp.net或aspx脚本。 我正在尝试创建一个脚本,如果没有设置cookie,将发送一个html文件,但如果是,则发送一个pdf。我不断收到运行时错误。

这是我的代码:

<%@ Page Language="C#" %>
<%
HttpCookie mycookie = Request.Cookies["CHECK"];
if (mycookie.Value == ""){
 Response.ContentType = "text/html";
 Response.Clear();
 Response.TransmitFile("forbidden.html");
 Response.End();
}
else
{
 Response.ContentType = "application/pdf";
 Response.Clear();
 Response.TransmitFile("test.pdf");
 Response.End();        
}
%>

我已经测试了html和pdf的响应代码块,两者都运行正常,并将文件发送到浏览器。我添加了使用cookie信息设置mycookie的行,它仍然有效。当我添加if逻辑时,我收到运行时错误。

有人能告诉我我做错了吗?

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

如果未设置Cookies["CHECK"],则mycookie将为null。因此,您可能会获得NullReferenceException

尝试以下方法:

if (mycookie == null || String.IsNullOrEmpty(myCookie.Value))) {
    // ...
} else {
    // ...
}

欢迎来到Stackoverflow。

答案 1 :(得分:0)

您需要检查mycookie是否为空。

尝试类似:

if (mycookie == null || String.IsNullOrEmpty(mycookie.Value)){

答案 2 :(得分:-1)

我的意思是,更好的是:

    <%@ Page Language="C#" %>
<%
HttpCookie mycookie = Request.Cookies["CHECK"];
if ((mycookie != null) && (mycookie.Value == "")) {
 Response.ContentType = "text/html";
 Response.Clear();
 Response.TransmitFile("forbidden.html");
 Response.End();
}
else
{
 Response.ContentType = "application/pdf";
 Response.Clear();
 Response.TransmitFile("test.pdf");
 Response.End();        
}
%>