2011-09-27 20 views
7

Opis: Wystąpił nieobsługiwany wyjątek podczas wykonywania bieżącego żądania WWW. Sprawdź ślad stosu, aby uzyskać więcej informacji o błędzie i skąd pochodzi w kodzie.System.Web.HttpException: Odpowiedź jest niedostępna w tym kontekście błąd

Szczegóły wyjątku: System.Web.HttpException: odpowiedź nie jest dostępna w tym kontekście.

Source Error: 


Line 10: public void Download(string filename) 
Line 11: { 
Line 12:   Response.ContentType = "application/exe"; 
Line 13:   Response.AppendHeader("Content-Disposition", filename); 
Line 14:   Response.TransmitFile(Server.MapPath("~/Resources/bb.exe")); 

mam tej metody wewnątrz klasy wzywam tę metodę po kliknięciu przycisku

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

public class Common: System.Web.UI.Page 
{ 
} 

Gdzie jestem będzie niewłaściwy

Odpowiedz

10

Przy użyciu obiektu reakcji ze strony aspx , jego klasa codebehind lub kontrola użytkownika , obiekt odpowiedzi jest bezpośrednio dostępny, ponieważ wszystkie te pochodzą z obiektu strony.

Przy użyciu obiektu odpowiedzi w swojej własnej klasy, obiekt nie jest dostępny, ale można do niego dostęp:

HttpContext.Current.Response. -> coś

+1

Dzięki. Wpadłem na ten problem, wywołując metodę za pomocą refleksji, mimo że była ona w tej samej klasie strony internetowej. – styfle

3

Po prostu nie można użyć obiektu Response strony, tak jak to robisz, ponieważ ten obiekt reprezentuje odpowiedź, która została już wysłana, więc nie można go zmodyfikować ani użyć pliku TransmitFile.

Musisz utworzyć własny program obsługi, aby zapisać plik na wyjściu serwera. Zapoznaj się z dokumentacją IHttpHandler (http://msdn.microsoft.com/en-us/library/system.web.ihttphandler.aspx)

2

nie jestem pewien Jak,

Ale złamane ciąg połączenie w moim Web.config pliku - spowodował ten sam problem.

Powiązane problemy