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 に答える