检查另一个子域中的文件

时间:2013-03-12 21:37:38

标签: c# asp.net subdomain

我希望在另一个子域的子域中检查文件,在sub1中的文件,我想在sub2中检查此文件。

sub1中的地址文件: sub1.mysite.com/img/10.jpg

 Server.MapPath(@"~/img/10.jpg");

我已经在sub2中检查了这个文件,所以我使用这段代码:这里的一些代码是

if (System.IO.File.Exists(Server.MapPath(@"~/img/10.jpg")))
{
   ...             
}

if (System.IO.File.Exists("http://sub1.mysite.com/img/10.jpg"))
{
   ...             
}

但它不起作用。请帮帮我。

2 个答案:

答案 0 :(得分:1)

使用HttpWebRequest发送资源请求并检查响应。

类似的东西:

bool fileExists = false;
try
 {
      HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create("http://sub1.mysite.com/img/10.jpg");
      using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
      {
           fileExists = (response.StatusCode == HttpStatusCode.OK);
      }
 }
 catch
 {
 }

答案 1 :(得分:1)

您必须使用HttpWebRequest通过HTTP访问它。您可以创建一个实用程序方法来执行此操作,例如:

public static bool CheckExists(string url)
{
   Uri uri = new Uri(url);
   if (uri.IsFile) // File is local
      return System.IO.File.Exists(uri.LocalPath);

   try
   {
      HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;
      request.Method = "HEAD"; // No need to download the whole thing
      HttpWebResponse response = request.GetResponse() as HttpWebResponse;
      return (response.StatusCode == HttpStatusCode.OK); // Return true if the file exists
   }
   catch
   {
      return false; // URL does not exist
   }
}

然后称之为:

if(CheckExists("http://sub1.mysite.com/img/10.jpg"))
{
   ...
}