Возможность включить файл в ASP.NET, но не проверить, существует ли он - PullRequest
0 голосов
/ 18 января 2010

Я хочу включить определенные файлы на мою страницу. Я не всегда уверен, что они существуют, поэтому я должен проверить, если они существуют. (В противном случае страница вылетает, как вы, наверное, знаете)

<%@ 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 ]

3 голосов
/ 18 января 2010

Попробуйте

exists = System.IO.File.Exists(Server.MapPath("~/extra/file/test.txt"));
2 голосов
/ 18 января 2010

Включения на стороне сервера являются устаревшим кодом ASP и не могут быть условными. Однако, так как вы используете код C # ASP.NET, вы можете просто прочитать файл и вывести его, используя C # вместо серверного включения.

Здесь, если вы получили ошибку с вашим кодом, возможно, это связано с тем, что что-то еще не настроено должным образом для вас (например, настройки безопасности).

1 голос
/ 18 января 2010

Включения на стороне сервера (SSI) выполняются перед вашим кодом, поэтому вы не можете сделать это таким образом.

Если ваш включенный файл является просто статической информацией (то есть без серверного кода), вы можете сделать что-то вроде:

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