DevExpress / DevExtreme

HTML5 JavaScript Component Suite for Responsive Web Development
https://js.devexpress.com/
Other
1.82k stars 597 forks source link

Troubles with OLAP via msmdpump.dll #919

Closed gordon-matt closed 7 years ago

gordon-matt commented 7 years ago

I'm not sure if this is the right place for this question. I originally asked this on StackOverflow, as I thought you guys might be monitoring the "devexpress" and "devextreme" tags, but the question hasn't received many views, so here it is - I hope you can help:

I'm upgrading a project from an older version of DevExpress to the latest version of DevExtreme and having an issue with the pivot grid's OLAP connection. In the old version, we could bind to a connection string as follows:

@Html.DevExpress().PivotGrid(pivotSettings).BindToOLAP("provider=MSOLAP;data source=.;initial catalog=Dashboard AS;cube name=Dashboard Cube").GetHtml()

In the new one, there is no option for a connection string and I am forced to provide a URL for msmdpump.dll.

I followed some of instructions here: Configure HTTP Access to Analysis Services on IIS 8.0

However, that is for IIS and not IIS Express, so I basically just copied the files to /wwwroot/OLAP/ in my new .NET Core application.

My pivot grid has the following definition:

@(Html.DevExtreme().PivotGrid()
    .ID("pivotGrid")
    .Width("100%")
    .AllowSortingBySummary(true)
    .AllowFiltering(true)
    .ShowBorders(true)
    .ShowColumnGrandTotals(true)
    .ShowRowGrandTotals(true)
    .ShowRowTotals(true)
    .ShowColumnTotals(true)
    .FieldChooser(c => c.Enabled(true))
    .DataSource(d => d.RetrieveFields(true)
        .Store(s => s.Xmla()
            .Url("/OLAP/msmdpump.dll")
            .Catalog("Dashboard AS")
            .Cube("Dashboard Cube")
        )
    )
)

and the msmdpump.ini is as follows:

<ConfigurationSettings>
    <ServerName>localhost</ServerName>
    <SessionTimeout>3600</SessionTimeout>
    <ConnectionPoolSize>100</ConnectionPoolSize>
</ConfigurationSettings>

The problem is I keep getting a 404 in the browser console even though the URL is correct: http://localhost:4116/OLAP/msmdpump.dll

I can't find any instructions for getting msmdpump.dll to work with IIS Express.

I'm thinking maybe IIS Express prevents the browser from accessing DLLs directly? I'm not certain... but it did give me a 404 on the .ini file as well when I tested that. If this is the problem, how do I solve it?

Is it possible for you to make this simpler by allowing an alternative to the Url parameter, so that we don't need to use msmdpump.dll? For example:

.Store(s => s.Xmla()
    .FromConnectionString("provider=MSOLAP;data source=.;initial catalog=Dashboard AS;cube name=Dashboard Cube")
)

or even have a Server parameter so you can build a connection string that way:

.Store(s => s.Xmla()
    .Server("localhost")
    .Catalog("Dashboard AS")
    .Cube("Dashboard Cube")
)
AlekseyMartynov commented 7 years ago

Hi @gordon-matt

I'm not sure if this is the right place for this question.

As we say in CONTRIBUTING.md, the best place to submit questions is Support Center. The issue is related to DevExtreme ASP.NET Controls but this repo is only for DevExtreme client-side libraries.

I can't find any instructions for getting msmdpump.dll to work with IIS Express

Is it a requirement to have msmdpump hosted in IIS Express? Xmla().Url() accepts any URLs, not only local ones. You can host the OLAP service in the "big" IIS or on another machine.

Is it possible for you to make this simpler by allowing an alternative to the Url parameter, so that we don't need to use msmdpump.dll?

If I understand correctly, the question is whether it's possible to connect via OleDb or ADOMD libraries instead of HTTP. Technically, it should be possible to introduce a helper class, at least for classic ASP.NET, not sure about .NET Core. We don't have this idea on our Backlog yet, I'll discuss it with the team.

/cc @San4es @vconst @roman-simionov

gordon-matt commented 7 years ago

Good point about hosting the DLL elsewhere. I will go ahead and give that a try. In any case, it's a lot of trouble to set that up, when connecting via ADOMD with a connection string would be much less of a headache for those of us who don't have some requirement to connect via msmdpump. Please do add that option if you can. Thanks.