0
我是一个完整的ASP .NET新手。我已经使用WCF 4 Rest Starter Kit编写了一组Web服务。我从Flash应用程序中调用了所有的东西,但是我想写一个快速且脏的管理面板供我自己使用,而不需要用Flash编写。从ASP中消费WCF Rest 4。 NET
我认为这将会更快地在ASP中启动并运行。所以,问题是考虑WCF的功能是这样的:
[WebInvoke(UriTemplate = "/Login/", Method = "POST")]
public User Login(User user)
{
// Code here
// Either throw a WebFaultException or return the logged in user with a session id
如何将消耗这从ASP.NET的页面,其中包含的用户名,密码,提交框,它要么显示错误401的等或成功(returneduser.sessionid )。
谢谢!
注意: 我知道如何通过Http在C#中调用Rest服务。这真的是有一个“好办法”,在ASP来,由于这个问题,或者它只是作出这样一种形式:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<form action="WebForm2.aspx.cs" >
<asp:textbox id="Email" runat="server"/>
<asp:textbox id="Password" runat="server"/>
<asp:Button id="Button1" OnClick="OnButtonClick" runat="server" Text="Login"/>
</form>
<asp:Label ID="labelResult" runat="server" />
</asp:Content>
然后在点击后面的代码中做这样的事情:
protected void OnButtonClick(object sender, EventArgs e)
{
HttpWebRequest req = WebRequest.Create("http://localhost:35810/Users/Login/") as HttpWebRequest;
String userString = UsefulStuff.Serialization.SerializationUtil.
SerializeDataContractToString(typeof(User), new User() { Email = new Email(textboxUsername.text),
Password = new Password(textboxPassword.text) });
String strResponse = GetHttpPostResponse(req, userString);
User recievedUser = UsefulStuff.Serialization.SerializationUtil.DeserializeDataContractString(
typeof(User), strResponse) as User;
labelResult.Text = recievedUser.SessionId;
}
public static String GetHttpPostResponse(HttpWebRequest httpWebRequest, String serializedPayload)
{
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "text/xml";
httpWebRequest.ContentLength = serializedPayload.Length;
StreamWriter streamOut = new StreamWriter(httpWebRequest.GetRequestStream(), Encoding.ASCII);
streamOut.Write(serializedPayload);
streamOut.Close();
StreamReader streamIn = new StreamReader(httpWebRequest.GetResponse().GetResponseStream());
string strResponse = streamIn.ReadToEnd();
streamIn.Close();
return strResponse;
}
甜蜜的,我已经有了代码发送请求,但会使用一些这方面的东西。我的问题可能不准确,那么我只是想知道是否有一个“好方法”来做到这一点,或者你只是在按钮点击处理程序中做到这一点。 – 2010-09-07 23:07:36
我收到此错误:{“无法关闭流,直到写入所有字节。”}在requestStream.close()。但是使用block byte [] bytes = dataSream1.ToArray();requestStream.Write(bytes,0,Convert.ToInt16(dataSream1.Length)); – Praneeth 2012-04-13 02:11:42