能够在 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");
%>
一切运行良好。
我也尝试将其放入<script runat="server">
块中,但仍然失败。
【问题讨论】:
【参考方案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 中包含文件,但不检查它是不是存在的主要内容,如果未能解决你的问题,请参考以下文章
XSD 检查所有元素是不是在整个 XML 文件中包含相同的值
如何在 ASP.NET 中使用 log4net 在日志文件中包含 SessionID?
ASP.NET MVC:在 App_Code 中包含扩展方法的文件必须具有构建操作“无”吗?
如何使用 .Net 4.0 中包含的 HttpClient 类将文件上传到在 IIS Express 中运行的 Asp.Net MVC 4.0 操作