0

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

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

4

3 回答 3

3

尝试

exists = System.IO.File.Exists(Server.MapPath("~/extra/file/test.txt"));
于 2010-01-18T20:21:57.417 回答
2

服务器端包含是遗留的 ASP 代码,不能是有条件的。但是,由于您使用的是 C# ASP.NET 代码,因此您可以只使用 C# 读取文件并输出它,而不是使用服务器端包含。

在这里,如果您的代码出现错误,可能是因为未正确配置其他内容以供您使用它(可能是安全设置?)。

于 2010-01-18T20:37:20.173 回答
1

服务器端包含(SSI)在您的代码之前执行,因此您不能这样做。

如果您包含的文件只是静态信息(即没有服务器端代码),您可以执行以下操作:

string file = Server.MapPath("~/extra/file/test.txt");
if(System.IO.File.Exists(file))
{
    Response.Write(System.IO.File.ReadAllText(file));
}
于 2010-01-18T20:34:49.007 回答