“the UmbracoHelper was constructed with an UmbracoContext and the current request is not a front-end request.”










0















I'm trying to implement ajax pagination using Umbraco.



On the server side, I have the following:



[System.Web.Http.HttpGet]
public JsonResult pagination(int? page)

IEnumerable<IPublishedContent> newsPosts = Umbraco.AssignedContentItem.DescendantOrSelf("news").Children.Where(x => x.IsVisible() && x.DocumentTypeAlias == "newsPost").OrderByDescending(x => x.UpdateDate).Take(5);

//from here on we will be returning the json within which information required for displaying post entries in carousel is included.
string json = "[some random string]"; //just random string for now.
return Json(json, JsonRequestBehavior.AllowGet);



As you can see, I'm trying to get necessary data from IPublishedContents, but I'm having trouble instantiating this series of IPublishedContents.



And this is the error I'm getting when I access:



locahost:port/umbraco/surface/controller/pagination on Chrome.



Cannot return the IPublishedContent because the UmbracoHelper was constructed with an UmbracoContext and the current request is not a front-end request.

Details: System.InvalidOperationException: Cannot return the IPublishedContent because the UmbracoHelper was constructed with an UmbracoContext and the current request is not a front-end request.


As I said, I'm making this request from Chrome, which is I think means this request is from the front end, so I'm not sure why I'm getting this error.



In the course of searching I found these



1) our.umbraco.com forum
2) stackoverflow post



  1. is deserted with no answer, and as for 2, it strikes me that the answer is not quite relevant to my case. I want to instantiate IPublishedContent in the first place.

Mine is Umbraco 7.



and could it be possible to tell me why requests from the front-end are not desirable?



Any hint would be highly appreciated.



Thanks,










share|improve this question
























  • if you spotted my answer saying "all I needed to do was to create a new instance of...", please forget it, I thought I did it but realised it was because I just commented out a crucial line

    – tofu
    Nov 19 '18 at 9:59












  • Does your controller inherit from Surface?

    – Jabberwocky
    Nov 21 '18 at 9:46















0















I'm trying to implement ajax pagination using Umbraco.



On the server side, I have the following:



[System.Web.Http.HttpGet]
public JsonResult pagination(int? page)

IEnumerable<IPublishedContent> newsPosts = Umbraco.AssignedContentItem.DescendantOrSelf("news").Children.Where(x => x.IsVisible() && x.DocumentTypeAlias == "newsPost").OrderByDescending(x => x.UpdateDate).Take(5);

//from here on we will be returning the json within which information required for displaying post entries in carousel is included.
string json = "[some random string]"; //just random string for now.
return Json(json, JsonRequestBehavior.AllowGet);



As you can see, I'm trying to get necessary data from IPublishedContents, but I'm having trouble instantiating this series of IPublishedContents.



And this is the error I'm getting when I access:



locahost:port/umbraco/surface/controller/pagination on Chrome.



Cannot return the IPublishedContent because the UmbracoHelper was constructed with an UmbracoContext and the current request is not a front-end request.

Details: System.InvalidOperationException: Cannot return the IPublishedContent because the UmbracoHelper was constructed with an UmbracoContext and the current request is not a front-end request.


As I said, I'm making this request from Chrome, which is I think means this request is from the front end, so I'm not sure why I'm getting this error.



In the course of searching I found these



1) our.umbraco.com forum
2) stackoverflow post



  1. is deserted with no answer, and as for 2, it strikes me that the answer is not quite relevant to my case. I want to instantiate IPublishedContent in the first place.

Mine is Umbraco 7.



and could it be possible to tell me why requests from the front-end are not desirable?



Any hint would be highly appreciated.



Thanks,










share|improve this question
























  • if you spotted my answer saying "all I needed to do was to create a new instance of...", please forget it, I thought I did it but realised it was because I just commented out a crucial line

    – tofu
    Nov 19 '18 at 9:59












  • Does your controller inherit from Surface?

    – Jabberwocky
    Nov 21 '18 at 9:46













0












0








0








I'm trying to implement ajax pagination using Umbraco.



On the server side, I have the following:



[System.Web.Http.HttpGet]
public JsonResult pagination(int? page)

IEnumerable<IPublishedContent> newsPosts = Umbraco.AssignedContentItem.DescendantOrSelf("news").Children.Where(x => x.IsVisible() && x.DocumentTypeAlias == "newsPost").OrderByDescending(x => x.UpdateDate).Take(5);

//from here on we will be returning the json within which information required for displaying post entries in carousel is included.
string json = "[some random string]"; //just random string for now.
return Json(json, JsonRequestBehavior.AllowGet);



As you can see, I'm trying to get necessary data from IPublishedContents, but I'm having trouble instantiating this series of IPublishedContents.



And this is the error I'm getting when I access:



locahost:port/umbraco/surface/controller/pagination on Chrome.



Cannot return the IPublishedContent because the UmbracoHelper was constructed with an UmbracoContext and the current request is not a front-end request.

Details: System.InvalidOperationException: Cannot return the IPublishedContent because the UmbracoHelper was constructed with an UmbracoContext and the current request is not a front-end request.


As I said, I'm making this request from Chrome, which is I think means this request is from the front end, so I'm not sure why I'm getting this error.



In the course of searching I found these



1) our.umbraco.com forum
2) stackoverflow post



  1. is deserted with no answer, and as for 2, it strikes me that the answer is not quite relevant to my case. I want to instantiate IPublishedContent in the first place.

Mine is Umbraco 7.



and could it be possible to tell me why requests from the front-end are not desirable?



Any hint would be highly appreciated.



Thanks,










share|improve this question
















I'm trying to implement ajax pagination using Umbraco.



On the server side, I have the following:



[System.Web.Http.HttpGet]
public JsonResult pagination(int? page)

IEnumerable<IPublishedContent> newsPosts = Umbraco.AssignedContentItem.DescendantOrSelf("news").Children.Where(x => x.IsVisible() && x.DocumentTypeAlias == "newsPost").OrderByDescending(x => x.UpdateDate).Take(5);

//from here on we will be returning the json within which information required for displaying post entries in carousel is included.
string json = "[some random string]"; //just random string for now.
return Json(json, JsonRequestBehavior.AllowGet);



As you can see, I'm trying to get necessary data from IPublishedContents, but I'm having trouble instantiating this series of IPublishedContents.



And this is the error I'm getting when I access:



locahost:port/umbraco/surface/controller/pagination on Chrome.



Cannot return the IPublishedContent because the UmbracoHelper was constructed with an UmbracoContext and the current request is not a front-end request.

Details: System.InvalidOperationException: Cannot return the IPublishedContent because the UmbracoHelper was constructed with an UmbracoContext and the current request is not a front-end request.


As I said, I'm making this request from Chrome, which is I think means this request is from the front end, so I'm not sure why I'm getting this error.



In the course of searching I found these



1) our.umbraco.com forum
2) stackoverflow post



  1. is deserted with no answer, and as for 2, it strikes me that the answer is not quite relevant to my case. I want to instantiate IPublishedContent in the first place.

Mine is Umbraco 7.



and could it be possible to tell me why requests from the front-end are not desirable?



Any hint would be highly appreciated.



Thanks,







ajax pagination umbraco






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 16 '18 at 5:19







tofu

















asked Nov 16 '18 at 4:56









tofutofu

46




46












  • if you spotted my answer saying "all I needed to do was to create a new instance of...", please forget it, I thought I did it but realised it was because I just commented out a crucial line

    – tofu
    Nov 19 '18 at 9:59












  • Does your controller inherit from Surface?

    – Jabberwocky
    Nov 21 '18 at 9:46

















  • if you spotted my answer saying "all I needed to do was to create a new instance of...", please forget it, I thought I did it but realised it was because I just commented out a crucial line

    – tofu
    Nov 19 '18 at 9:59












  • Does your controller inherit from Surface?

    – Jabberwocky
    Nov 21 '18 at 9:46
















if you spotted my answer saying "all I needed to do was to create a new instance of...", please forget it, I thought I did it but realised it was because I just commented out a crucial line

– tofu
Nov 19 '18 at 9:59






if you spotted my answer saying "all I needed to do was to create a new instance of...", please forget it, I thought I did it but realised it was because I just commented out a crucial line

– tofu
Nov 19 '18 at 9:59














Does your controller inherit from Surface?

– Jabberwocky
Nov 21 '18 at 9:46





Does your controller inherit from Surface?

– Jabberwocky
Nov 21 '18 at 9:46












2 Answers
2






active

oldest

votes


















0














Perhaps easier to use web api



Create a controller which inherits from UmbracoApiController



public class PagedItemsController : UmbracoApiController

[HttpGet]
[ActionName("list")] //Optional see note below
public IHttpActionResult GetItems([FromUri] int pageNo = 1)

// Next you need some way of getting the items you need.
// I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here)
// I've just included this for brevity
var items = _itemService.GetPagedItems(pageNo);

// Now return the results
return Ok(items);




Calls to endpoints in Umbraco follow the format



/umbraco/api/controller/endpoint


With the [ActionName("list")] above the call to the GetItems method will be



http://example.com/umbraco/api/PagedItems/list?pageNo=3


Without the ActionName attribute the call would be



http://exampe.com/umbraco/api/PagedItems/GetItems?pageNo=3


With a standard jquery ajax call this will return json without needing to serialise.






share|improve this answer























  • thanks for the answer, but I still cannot instantiate ipublishedcontents within the controller. Getting the same, "the Umbraco Helper was constructed with an..." error. // Next you need some way of getting the items you need. // I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here) =>would be great if you could give me a little bit more details (parameters and property names can be just a mock, but would like actual methods. thanks,

    – tofu
    Nov 19 '18 at 9:17











  • So are you trying to call this endpoint by putting the url in Chrome address bar? Does your endpoint return anything if you don't include the calls to Umbraco methods?

    – wingyip
    Nov 19 '18 at 11:43











  • thanks for all the information, (1) I'm not intending to use the browser to see the result of my controller, so I get your point. (2) I was having trouble with the instantiation of Umbraco Helper, and it turns out I should've done "TypedContent" instead of "AssignedContentItem" (I didn't provide enough information, so it's my fault)

    – tofu
    Nov 28 '18 at 6:43


















0














Try getting your node this way.



var umbracoHelper = new Umbraco.Web.UmbracoHelper(Umbraco.Web.UmbracoContext.Current);
var yourNode = umbracoHelper.TypedContentAtXPath("umbracoPathtoYourNode");





share|improve this answer






















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53331681%2fthe-umbracohelper-was-constructed-with-an-umbracocontext-and-the-current-reques%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Perhaps easier to use web api



    Create a controller which inherits from UmbracoApiController



    public class PagedItemsController : UmbracoApiController

    [HttpGet]
    [ActionName("list")] //Optional see note below
    public IHttpActionResult GetItems([FromUri] int pageNo = 1)

    // Next you need some way of getting the items you need.
    // I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here)
    // I've just included this for brevity
    var items = _itemService.GetPagedItems(pageNo);

    // Now return the results
    return Ok(items);




    Calls to endpoints in Umbraco follow the format



    /umbraco/api/controller/endpoint


    With the [ActionName("list")] above the call to the GetItems method will be



    http://example.com/umbraco/api/PagedItems/list?pageNo=3


    Without the ActionName attribute the call would be



    http://exampe.com/umbraco/api/PagedItems/GetItems?pageNo=3


    With a standard jquery ajax call this will return json without needing to serialise.






    share|improve this answer























    • thanks for the answer, but I still cannot instantiate ipublishedcontents within the controller. Getting the same, "the Umbraco Helper was constructed with an..." error. // Next you need some way of getting the items you need. // I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here) =>would be great if you could give me a little bit more details (parameters and property names can be just a mock, but would like actual methods. thanks,

      – tofu
      Nov 19 '18 at 9:17











    • So are you trying to call this endpoint by putting the url in Chrome address bar? Does your endpoint return anything if you don't include the calls to Umbraco methods?

      – wingyip
      Nov 19 '18 at 11:43











    • thanks for all the information, (1) I'm not intending to use the browser to see the result of my controller, so I get your point. (2) I was having trouble with the instantiation of Umbraco Helper, and it turns out I should've done "TypedContent" instead of "AssignedContentItem" (I didn't provide enough information, so it's my fault)

      – tofu
      Nov 28 '18 at 6:43















    0














    Perhaps easier to use web api



    Create a controller which inherits from UmbracoApiController



    public class PagedItemsController : UmbracoApiController

    [HttpGet]
    [ActionName("list")] //Optional see note below
    public IHttpActionResult GetItems([FromUri] int pageNo = 1)

    // Next you need some way of getting the items you need.
    // I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here)
    // I've just included this for brevity
    var items = _itemService.GetPagedItems(pageNo);

    // Now return the results
    return Ok(items);




    Calls to endpoints in Umbraco follow the format



    /umbraco/api/controller/endpoint


    With the [ActionName("list")] above the call to the GetItems method will be



    http://example.com/umbraco/api/PagedItems/list?pageNo=3


    Without the ActionName attribute the call would be



    http://exampe.com/umbraco/api/PagedItems/GetItems?pageNo=3


    With a standard jquery ajax call this will return json without needing to serialise.






    share|improve this answer























    • thanks for the answer, but I still cannot instantiate ipublishedcontents within the controller. Getting the same, "the Umbraco Helper was constructed with an..." error. // Next you need some way of getting the items you need. // I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here) =>would be great if you could give me a little bit more details (parameters and property names can be just a mock, but would like actual methods. thanks,

      – tofu
      Nov 19 '18 at 9:17











    • So are you trying to call this endpoint by putting the url in Chrome address bar? Does your endpoint return anything if you don't include the calls to Umbraco methods?

      – wingyip
      Nov 19 '18 at 11:43











    • thanks for all the information, (1) I'm not intending to use the browser to see the result of my controller, so I get your point. (2) I was having trouble with the instantiation of Umbraco Helper, and it turns out I should've done "TypedContent" instead of "AssignedContentItem" (I didn't provide enough information, so it's my fault)

      – tofu
      Nov 28 '18 at 6:43













    0












    0








    0







    Perhaps easier to use web api



    Create a controller which inherits from UmbracoApiController



    public class PagedItemsController : UmbracoApiController

    [HttpGet]
    [ActionName("list")] //Optional see note below
    public IHttpActionResult GetItems([FromUri] int pageNo = 1)

    // Next you need some way of getting the items you need.
    // I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here)
    // I've just included this for brevity
    var items = _itemService.GetPagedItems(pageNo);

    // Now return the results
    return Ok(items);




    Calls to endpoints in Umbraco follow the format



    /umbraco/api/controller/endpoint


    With the [ActionName("list")] above the call to the GetItems method will be



    http://example.com/umbraco/api/PagedItems/list?pageNo=3


    Without the ActionName attribute the call would be



    http://exampe.com/umbraco/api/PagedItems/GetItems?pageNo=3


    With a standard jquery ajax call this will return json without needing to serialise.






    share|improve this answer













    Perhaps easier to use web api



    Create a controller which inherits from UmbracoApiController



    public class PagedItemsController : UmbracoApiController

    [HttpGet]
    [ActionName("list")] //Optional see note below
    public IHttpActionResult GetItems([FromUri] int pageNo = 1)

    // Next you need some way of getting the items you need.
    // I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here)
    // I've just included this for brevity
    var items = _itemService.GetPagedItems(pageNo);

    // Now return the results
    return Ok(items);




    Calls to endpoints in Umbraco follow the format



    /umbraco/api/controller/endpoint


    With the [ActionName("list")] above the call to the GetItems method will be



    http://example.com/umbraco/api/PagedItems/list?pageNo=3


    Without the ActionName attribute the call would be



    http://exampe.com/umbraco/api/PagedItems/GetItems?pageNo=3


    With a standard jquery ajax call this will return json without needing to serialise.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Nov 17 '18 at 10:02









    wingyipwingyip

    2,15921638




    2,15921638












    • thanks for the answer, but I still cannot instantiate ipublishedcontents within the controller. Getting the same, "the Umbraco Helper was constructed with an..." error. // Next you need some way of getting the items you need. // I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here) =>would be great if you could give me a little bit more details (parameters and property names can be just a mock, but would like actual methods. thanks,

      – tofu
      Nov 19 '18 at 9:17











    • So are you trying to call this endpoint by putting the url in Chrome address bar? Does your endpoint return anything if you don't include the calls to Umbraco methods?

      – wingyip
      Nov 19 '18 at 11:43











    • thanks for all the information, (1) I'm not intending to use the browser to see the result of my controller, so I get your point. (2) I was having trouble with the instantiation of Umbraco Helper, and it turns out I should've done "TypedContent" instead of "AssignedContentItem" (I didn't provide enough information, so it's my fault)

      – tofu
      Nov 28 '18 at 6:43

















    • thanks for the answer, but I still cannot instantiate ipublishedcontents within the controller. Getting the same, "the Umbraco Helper was constructed with an..." error. // Next you need some way of getting the items you need. // I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here) =>would be great if you could give me a little bit more details (parameters and property names can be just a mock, but would like actual methods. thanks,

      – tofu
      Nov 19 '18 at 9:17











    • So are you trying to call this endpoint by putting the url in Chrome address bar? Does your endpoint return anything if you don't include the calls to Umbraco methods?

      – wingyip
      Nov 19 '18 at 11:43











    • thanks for all the information, (1) I'm not intending to use the browser to see the result of my controller, so I get your point. (2) I was having trouble with the instantiation of Umbraco Helper, and it turns out I should've done "TypedContent" instead of "AssignedContentItem" (I didn't provide enough information, so it's my fault)

      – tofu
      Nov 28 '18 at 6:43
















    thanks for the answer, but I still cannot instantiate ipublishedcontents within the controller. Getting the same, "the Umbraco Helper was constructed with an..." error. // Next you need some way of getting the items you need. // I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here) =>would be great if you could give me a little bit more details (parameters and property names can be just a mock, but would like actual methods. thanks,

    – tofu
    Nov 19 '18 at 9:17





    thanks for the answer, but I still cannot instantiate ipublishedcontents within the controller. Getting the same, "the Umbraco Helper was constructed with an..." error. // Next you need some way of getting the items you need. // I would not return the whole IPublishedContent items. Rather query those and then use linq Select to transform into a more relevant smaller class (not doing this here) =>would be great if you could give me a little bit more details (parameters and property names can be just a mock, but would like actual methods. thanks,

    – tofu
    Nov 19 '18 at 9:17













    So are you trying to call this endpoint by putting the url in Chrome address bar? Does your endpoint return anything if you don't include the calls to Umbraco methods?

    – wingyip
    Nov 19 '18 at 11:43





    So are you trying to call this endpoint by putting the url in Chrome address bar? Does your endpoint return anything if you don't include the calls to Umbraco methods?

    – wingyip
    Nov 19 '18 at 11:43













    thanks for all the information, (1) I'm not intending to use the browser to see the result of my controller, so I get your point. (2) I was having trouble with the instantiation of Umbraco Helper, and it turns out I should've done "TypedContent" instead of "AssignedContentItem" (I didn't provide enough information, so it's my fault)

    – tofu
    Nov 28 '18 at 6:43





    thanks for all the information, (1) I'm not intending to use the browser to see the result of my controller, so I get your point. (2) I was having trouble with the instantiation of Umbraco Helper, and it turns out I should've done "TypedContent" instead of "AssignedContentItem" (I didn't provide enough information, so it's my fault)

    – tofu
    Nov 28 '18 at 6:43













    0














    Try getting your node this way.



    var umbracoHelper = new Umbraco.Web.UmbracoHelper(Umbraco.Web.UmbracoContext.Current);
    var yourNode = umbracoHelper.TypedContentAtXPath("umbracoPathtoYourNode");





    share|improve this answer



























      0














      Try getting your node this way.



      var umbracoHelper = new Umbraco.Web.UmbracoHelper(Umbraco.Web.UmbracoContext.Current);
      var yourNode = umbracoHelper.TypedContentAtXPath("umbracoPathtoYourNode");





      share|improve this answer

























        0












        0








        0







        Try getting your node this way.



        var umbracoHelper = new Umbraco.Web.UmbracoHelper(Umbraco.Web.UmbracoContext.Current);
        var yourNode = umbracoHelper.TypedContentAtXPath("umbracoPathtoYourNode");





        share|improve this answer













        Try getting your node this way.



        var umbracoHelper = new Umbraco.Web.UmbracoHelper(Umbraco.Web.UmbracoContext.Current);
        var yourNode = umbracoHelper.TypedContentAtXPath("umbracoPathtoYourNode");






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 23 '18 at 9:18









        Sindri Már SigfussonSindri Már Sigfusson

        1




        1



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53331681%2fthe-umbracohelper-was-constructed-with-an-umbracocontext-and-the-current-reques%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Top Tejano songwriter Luis Silva dead of heart attack at 64

            政党

            天津地下鉄3号線