how to pass data directly in stream on the WS calls

B

Bob

I'm trying to centralize some of the common Web User Controls used in all of
our web applications (like header, footer) and put them in a web service to
be called by all the other web applications. There are a couple of ways I
can think of that can probably accomplish what I need. I'm most interested
in rendering the control on the WS server end, and then stream the result to
the consuming clients (the other web applications). I think this is
definitely doable but just can't quite figure how this should work. The
following is what I have so far on the WS server end in the asmx class:

[WebMethod]
public void GetPageHeader() {
/*oad the user control */
UserControl uc = new UserControl();
UserControl header =
(UserControl)uc.LoadControl(@"~\UI\HeaderNoMenu.ascx");

/*render the user control into the HttpResponse stream */
TextWriter tw = new
StreamWriter(this.Context.Response.OutputStream);
HtmlTextWriter htw = new HtmlTextWriter(tw);
header.RenderControl(htw);
}

This compiles ok and runs without error when invoked from a browse (it
doesn't show anything in the browser as expected). However, I'm not sure
how to get the stream from the client end as no stream is exposed anywhere.
A fragment of the proxy class generated is shown below.

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]

[System.Web.Services.WebServiceBindingAttribute(Name="CommonUIElementsSoap",
Namespace="http://tempuri.org/")]
public class CommonUIElements :
System.Web.Services.Protocols.SoapHttpClientProtocol {



[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.o
rg/GetPageHeader", RequestNamespace="http://tempuri.org/",
ResponseNamespace="http://tempuri.org/",
Use=System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void GetPageHeader() {
this.Invoke("GetPageHeader", new object[0]);
}


Do I need to implement something myself in order to get the stream, like
maybe using SoapExtension class? Any suggestions would be helpful.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,763
Messages
2,569,563
Members
45,039
Latest member
CasimiraVa

Latest Threads

Top