0

我做了一些 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 逻辑时,出现运行时错误。

有人可以告诉我我做错了什么吗?

提前感谢您的帮助。

4

3 回答 3

1

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

尝试以下操作:

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

欢迎来到 Stackoverflow。

于 2012-08-07T14:31:02.083 回答
0

您需要检查 mycookie 是否为空。

尝试类似:

if (mycookie == null || String.IsNullOrEmpty(mycookie.Value)){
于 2012-08-07T14:34:45.870 回答
-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();        
}
%>
于 2012-08-07T14:42:16.577 回答