2010-01-18 1 views
0

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

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

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

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

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

Это действительно будет довольным. Это работает как шарм. – skerit

3

Попробуйте

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

Server.MapPath сделал это, действительно. Тильда добавила несколько карт в структуру, поэтому мне пришлось ее удалить, но все же: успех. – skerit

2

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

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