能够在ASP.NET中包含文件,但不检查它是否存在

时间:2010-01-18 20:17:37

标签: c# asp.net include file-exists

我想在我的页面中包含某些文件。 我不总是确定它们是否存在,所以我必须检查它们是否存在。 (否则页面崩溃,你可能知道)

<%@ 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">块中,但它仍然失败。

3 个答案:

答案 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));
}