Я полный новичок ASP.NET. Я написал набор веб-сервисов, используя WCF 4 Rest Starter Kit. Я вызываю все из Flash-приложения, но я хочу написать для себя самую быструю и грязную панель администратора, которая не должна быть написана во Flash.Потребление WCF Rest 4 Из ASP. 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#. Это действительно вопрос о том есть «хороший путь» к должному это в 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;
}
сладким, у меня уже есть код для отправки запроса, но буду использовать немного этот материал. мой вопрос, вероятно, не был точным, я просто задавался вопросом, был ли «хороший способ» сделать это, или вы просто делаете это в обработчике кнопок. –
Я получаю эту ошибку: {«Невозможно закрыть поток до тех пор, пока все байты не будут записаны».} В requestStream.close(). но добавив это в использование байта [] bytes = dataSream1.ToArray(); requestStream.Write (байты, 0, Convert.ToInt16 (dataSream1.Length)); – Praneeth