我想在我的页面中包含某些文件。 我不总是确定它们是否存在,所以我必须检查它们是否存在。 (否则页面崩溃,你可能知道)
<%@ Page Language="C#" %>
<html>
<body>
<% bool exists;
exists = System.IO.File.Exists("/extra/file/test.txt");
%>
Test include:<br>
<!--#include file="/extra/file/test.txt"-->
</body>
</html>
</html>
虽然包含有效,但检查文件是否存在的代码却没有。
如果我删除此代码:
<% bool exists;
exists = System.IO.File.Exists("/extra/file/test.txt");
%>
一切都运行良好。
我也尝试将它放在<script runat="server">
块中,但它仍然失败。
答案 0 :(得分:3)
尝试
exists = System.IO.File.Exists(Server.MapPath("~/extra/file/test.txt"));
答案 1 :(得分:2)
服务器端包含旧版ASP代码,不能是有条件的。但是,由于您使用的是C#ASP.NET代码,因此您只需读取文件并使用C#而不是服务器端include输出。
在这里,如果您的代码出错,可能是因为没有正确配置其他东西(安全设置,可能?)。
答案 2 :(得分:1)
服务器端包含(SSI)在您的代码之前执行,因此您不能这样做。
如果您所包含的文件只是静态信息(即没有服务器端代码),您可以执行以下操作:
string file = Server.MapPath("~/extra/file/test.txt");
if(System.IO.File.Exists(file))
{
Response.Write(System.IO.File.ReadAllText(file));
}