2009-10-16 5 views
0

По существу у меня есть тег img с атрибутом src/ChartImg.axd?i=chart_0_0.png&g=06469eea67ea452b977f8e73cad70691. Нужно ли создавать другой WebRequest для получения содержимого этого ресурса или есть более простой способ?Как очистить содержимое ресурса axd?

Я очищаю вывод текущего запроса. Ниже приведено то, что у меня есть до сих пор ...

По существу мои добавочные ассембли будут содержать в некоторых случаях относительный Uri для ресурса .axd. Я хотел бы включить этот контент в архив, который я создаю.

private void ProcessPrintRequest() 
    { 
     this.Response.Clear(); 
     this.Response.ContentType = "application/zip"; 
     this.Response.AddHeader("Content-Disposition", "attachment;filename=archive.zip"); 

     using (var stream = new ZipOutputStream(new ZeroByteStreamWrapper(this.Response.OutputStream))) 
     { 
      stream.SetLevel(9); 

      var additionalAssets = new PathNormailzationDictionary(); 

      this.ExportDocument(stream, additionalAssets); 
      this.ExportAdditionalAssets(stream, additionalAssets); 
     } 

     this.Response.End(); 
    } 

    private void ExportAdditionalAssets(ZipOutputStream stream, PathNormailzationDictionary additionalAssets) 
    { 
     var buffer = new byte[32 * 1024]; 
     int read; 

     // TODO: Request content of .axd resources 
     foreach (var item in additionalAssets.Where(item => File.Exists(Server.MapPath(item.Key)))) 
     { 
      var entry = new ZipEntry(item.Value); 

      stream.PutNextEntry(entry); 

      using (var fileStream = File.OpenRead(Server.MapPath(item.Key))) 
      { 
       while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0) 
       { 
        stream.Write(buffer, 0, read); 
       } 
      } 
     } 
    } 

    private void ExportDocument(ZipOutputStream stream, PathNormailzationDictionary additionalAssets) 
    { 
     var entry = new ZipEntry("index.html"); 

     stream.PutNextEntry(entry); 

     var document = this.GetNormalizedDocument(additionalAssets); 

     var writer = new StreamWriter(stream); 
     writer.Write(document); 
     writer.Flush(); 
    } 

    private string GetNormalizedDocument(PathNormailzationDictionary additionalAssets); 

ответ

2

Да, вам нужно создать еще один веб-запрос. Любая данная HTML-страница состоит из нескольких HTTP-запросов; один для html-страницы, затем другой для каждого внешнего SRC. Не уйти от него.

-Oisin

Смежные вопросы