Вызов метода из файла .ashx -> response.write - PullRequest
0 голосов
/ 14 декабря 2011

В моем .aspx:

public static void DoStuff(XmlDocument doc)
    {

    HttpResponse response = HttpContext.Current.Response;

        string xmlString = doc.InnerXml;

        string fileName = "ExportedForm.xml";

        response.StatusCode = 200;

        response.AddHeader("content-disposition", "attachment; filename=" + fileName);
        response.AddHeader("Content-Transfer-Encoding", "binary");
       // response.AddHeader("Content-Length", _Buffer.Length.ToString());

        response.ContentType = "application-download";
        response.Write(xmlString);
}

в моем handler.ashx:

private void GenerateXml()
    {

        var JsonXmlData = HttpContext.Current.Request["objectToSend"];

        XmlDocument doc = JsonConvert.DeserializeXmlNode(JsonXmlData);

        SystemAuditView.DoStuff(doc); //systemauditview is the .aspx
    }

Если я вызываю метод DoStuff из события щелчка, он работает. Но когда я звоню из кода, ничего не происходит. Я полагаю, мне как-то нужно вызвать обратную передачу? Или в чем здесь проблема? Спасибо

Ответы [ 2 ]

0 голосов
/ 06 декабря 2012

не зная вашей страницы, пространства имен или имен классов, чтобы выяснить, какой из них является SystemAuditView, я бы сказал, что вы пропустили шаг в «SystemAuditView.DoStuff ()»

Например, чтобы вызвать метод с полным именем, вы должны написать: Page.namespace.class.method () для его вызова.

Или, если вы не хотите этого делать, вам нужно связать страницы по наследству или использованию.

0 голосов
/ 14 декабря 2011

Попробуйте создать объект для SystemAuditView, а затем попытайтесь получить доступ к методу DoStuff.

Поскольку DoStuff является распространенным методом, этот код следует поместить в папку App_Code.

http://forums.asp.net/t/1291538.aspx

...