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

Posted

技术标签:

【中文标题】能够在 ASP.NET 中包含文件,但不检查它是不是存在【英文标题】:Able to include file in ASP.NET, but not check if it exists能够在 ASP.NET 中包含文件,但不检查它是否存在 【发布时间】:2011-01-06 12:43:38 【问题描述】:

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

<%@ 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");
%> 

一切运行良好。 我也尝试将其放入&lt;script runat="server"&gt; 块中,但仍然失败。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

string file = Server.MapPath("~/extra/file/test.txt");
if(System.IO.File.Exists(file))

    Response.Write(System.IO.File.ReadAllText(file));

【讨论】:

【参考方案3】:

试试

exists = System.IO.File.Exists(Server.MapPath("~/extra/file/test.txt"));

【讨论】:

Server.MapPath 确实做到了。波浪号确实为结构添加了一些地图,所以我不得不删除它,但仍然:成功。

以上是关于能够在 ASP.NET 中包含文件,但不检查它是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

在 asp.net 中包含 .css 文件

在 JSP 中包含/导入文件之前,如何检查文件是不是存在?

XSD 检查所有元素是不是在整个 XML 文件中包含相同的值

如何在 ASP.NET 中使用 log4net 在日志文件中包含 SessionID?

ASP.NET MVC:在 App_Code 中包含扩展方法的文件必须具有构建操作“无”吗?

如何使用 .Net 4.0 中包含的 HttpClient 类将文件上传到在 IIS Express 中运行的 Asp.Net MVC 4.0 操作