Friday, February 24, 2012

Error in creating a simple asp.net app similar to sample.net (as2000 samples)

Hi,

I am new to MS Analysis server technologies.
I environment consists of:
Server: windows 2003 server, Sql server 2005, analysis server 2005
client: windows xp

As given by Microsoft, I configured the server for HTTP access. When I try to browse to msmdpump.dll by giving the path "http://ServerName/olap/msmdpump.dll" both in server and client systems I get the HTTP 500 Internal server error.
I also did a right-click->browse from the inetmgr in the server. still I am getting the same error.

Should I not be getting some response when i browse to the msmdpump.dll?

Please do help me.
Is there something else that I have to do.

Regards
Vijay R

You cannot use IE. You should try and use client side application: One like MDXSample app shipped with AS2000 to browse AS2005 cubes.

Edward.
--
This posting is provided "AS IS" with no warranties, and confers no rights.

|||

Hi,

Thanks for the reply. I did that and with a bith of tweaking and minor re-coding I am able to run the sample.net windows application.

Next I tried to create a simple asp.net application similar to the code in the sample.net .The sample was in vb.net and I have coded in c#.

I now get the following error when I run and try to send a simple "Discover" request. The error i get is:

<code>

SoapException: The Session element at line 1, column 547 (namespace urn:schemas-microsoft-com:xml-analysis) cannot appear under Envelope/Body.]
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) +1503
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) +218
OlapApp.XMLA.MsXmlAnalysis.Discover(Discover Discover1, Session& Session, BeginSession BeginSession, EndSession EndSession) in z:\olapapp\web references\xmla\reference.cs:47
OlapApp.TestForm1.btnRequest_Click(Object sender, EventArgs e) in z:\olapapp\testform1.aspx.cs:130
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1292

</code>

In my code I am doing the following:

I created a web reference to the msmdpump.dll (discover, execute - webservice) using the vs.wsdl in visual studio.

My page has a button and a drop down list, the drop down list enables the user to select the "RequestType" for the discover request. like catalog, cube, dimension....etc

on click, I set the properties of the discovery object and pass it to the webservice with the other parameters.

Here is my code:

<code>

private void btnRequest_Click(object sender, System.EventArgs e){

if(RequestType.Equals("DISCOVER_DATASOURCES"))

{Restrictions = "";

Properties = "<Format>Tabular</Format>";}

if(Restrictions != "")

{ string strRestrictionXml = "<RestrictionList xmlns=" + '"' + "urn:schemas-microsoft-com:xml-analysis" + '"' + ">" + Restrictions + "</RestrictionList>";

RestrictionsXml.LoadXml(strRestrictionXml);}

if(Properties != "")

{string strPropertiesXml = "<PropertyList xmlns=" + '"' + "urn:schemas-microsoft-com:xml-analysis" + '"' + ">" + Properties + "</PropertyList>";

PropertiesXml.LoadXml(strPropertiesXml);}

//main code is here--

XMLA.Discover XMLAdiscRequest = new OlapApp.XMLA.Discover();

XMLAdiscRequest.RequestType = RequestType;

XMLAdiscRequest.Properties = (System.Xml.XmlElement)PropertiesXml.FirstChild;

XMLAdiscRequest.Restrictions = (System.Xml.XmlElement)RestrictionsXml.FirstChild;

XMLA.Session XMLARequestSession = new OlapApp.XMLA.Session();

XMLA.MsXmlAnalysis DiscoverWS = new OlapApp.XMLA.MsXmlAnalysis();

DiscoverWS.Url = ServerURL;

DiscoverWS.Credentials = CredentialCache.DefaultCredentials;

ResponseXml = DiscoverWS.Discover(XMLAdiscRequest,ref XMLARequestSession,null,null).@.return;

lblResultant.Visible = true;

lblResultant.Text = ResponseXml.OuterXml;

<\code>

sorry for the lengthy code. can anybody tell me where I am doing wrong? if not can anybody give some sample code?

thanks and regards

Vijay R

|||

The error indicates that your request is not constructed correctly.

Try and run SQL Profiler connect to Analysis Services and see how well-formed requests look like when connecting from MDXSample app or SQL Management studio.

Edward.
--
This posting is provided "AS IS" with no warranties, and confers no rights.

|||

Hi,

Thanks I found out the error. I was creating an object of the session.

Now it is returning a response for the "DISCOVER_DATASOURCES" discover request.

but when I am trying to discover the catalogs in the datasource, It is only returning the schema but no catalog rows.

It is the same code used for discover of datasources, except I changed the RequestType to "DBSCHEMA_CATALOGS" and the Properties to :

<DataSourceInfo>myDataSourceName</DataSourceInfo>
<Format>Tabular</Format>

Please tell me what is the reason for this?

Also, The above error is in an asp.net application. I then created a small windows application in C# .net. there it is returning me the correct response for the Dbschema_catalogs request.

What is the error? what should I be doing?

Thanks and Regards

Vijay R

|||

Hi,

wanetd to tell one more thing that I noticed. I had the sql profiler for ssas 2005 open.

All requests made by me (both win app and asp.net app) have a "0" (zero) in the error column for the event subclass "Server state Discover End".

what is this error? how do i solve it?

Thanks and Regards

Vijay R

|||

Try and see what is the user your asp application is running under. This could be just matter of access permission.

Error = 0 means the operation completed successfully.

Edward.
--
This posting is provided "AS IS" with no warranties, and confers no rights.

|||

Hi ,

Thanks,

That helped. I just added the Impersonate user in the web.config of the file.

I have another problem today.

Please do see my other post

thanks again

regards

Vijay R

No comments:

Post a Comment