【问题标题】:Windows Azure access POST dataWindows Azure 访问 POST 数据
【发布时间】:2010-12-28 04:34:35
【问题描述】:

好的,所以我似乎找不到像样的 Windows Azure 示例。我有一个基于this tutorial 的简单hello world 应用程序。我想要自定义输出而不是 JSON 或 XML。所以我创建了我的界面:

[ServiceContract]
public interface IService
{
    [OperationContract]
    [WebInvoke(UriTemplate = "session/create", Method = "POST")]
    string createSession();
}

public class MyService : IService
{
    public string createSession()
    {
        // get access to POST data here: user, pass
        string sessionid = Session.Create(user, pass);
        return "sessionid=" + sessionid;
    }
}

对于我的生活,我似乎无法弄清楚如何访问POST 数据。请帮忙。谢谢!

【问题讨论】:

  • 您的服务使用哪种协议?
  • 我使用 HTTP 协议,WebServiceHostFactory 作为 HostFactory。
  • 只是一个旁注,创建一个会话 ID,您可能希望确保通行证具有时间戳元素,以便您每次都获得不同的会话 ID。还将用户与通行证合并将确保每个用户的通行证不同(如果您不想包含时间戳)。
  • @Russel,session.create 代码只是说“用户已成功登录,这是 sessionid”,它只是一个大纲/存根,而不是实际代码。我只需要知道如何从 POST 数据中获取用户/传递变量。

标签: asp.net wcf post azure


【解决方案1】:

如果您有一个 HttpContext,则可能有一个 Request 对象,其中包含表单数据。我将部分内容基于此问题的 ASP.Net 标记,因此,如果这不正确,则可能需要以另一种方式处理此问题,但在我看来,它看起来很像 Web 服务。


编辑:HttpRequest 是具有 Form 属性的类,如果这是一个 HTTP 请求,该属性应该是存储 POST 数据的位置。这是 System.Web 的一部分,所以我记得它应该可以很容易地使用。


Sample code 显示 Request.Form 属性:

int loop1;
NameValueCollection coll;

//Load Form variables into NameValueCollection variable.
coll=Request.Form;
// Get names of all forms into a string array.
String[] arr1 = coll.AllKeys;
for (loop1 = 0; loop1 < arr1.Length; loop1++) 
{
    Response.Write("Form: " + arr1[loop1] + "<br>");
}

这假定周围有一个 HttpRequest 实例。


WCF Simplified Part 4: Comparing the Request/Reply and One-Way Patterns 传入一个参数,以便您的“createSession”方法必须接受它会出现的那些字符串。我已经习惯了 ASP.Net 世界,那里有一些内置对象,如请求、响应、服务器、应用程序和会话。


是的,如果您确实尝试更改方法签名,因为在我链接的最后一个示例中可以传递参数,但我不知道这是否适用于您的情况。

【讨论】:

  • 从外观上看,我认为这实际上是一个 WCF 服务。我添加了 WCF 标记。
  • @smartx,谢谢。那是一个错字。 @JB King,不知道如何访问 HttpContext,我认为我根本没有使用 ASP.NET。但我不太确定,我只是按照教程操作:blogs.msdn.com/b/davidlem/archive/2010/04/26/…
  • @JB King,请在我上面的示例代码上下文中显示示例代码。看看上面写着get access to POST data here: user, pass 的评论 - 我创建了一个赏金来让它值得你花时间。
  • @JB King,我在哪里可以找到HttpRequest 实例?请告诉我如何访问上述createSession() 函数中的POST 数据。
  • 谢谢JB King!我会给你这个问题的赏金。所以换句话说,你的答案是在 WCF 语法中没有办法做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 2016-01-14
  • 2016-05-16
相关资源
最近更新 更多