一些帮助发布到 ASP.NET 使用 C# 的 Web API

本文关键字:使用 Web API NET ASP 帮助 | 更新日期: 2023-09-27 18:32:31

我一直在玩 ASP.NET Web API。我正在寻找我可以发布到我构建的方法,该方法只是返回我已发布的对象:

在帐户控制器上:

// POST /api/accounts
public Account Post(Account account)
{
   return account;
}

用于发布的代码:

    public void PostAccount()
    {
        // http://local_ip/api/accounts
        var uri = string.Format("{0}", webServiceRoot); 

        var acc = new Account();
        acc.AccountID = "8";
        acc.AccountName = "Mitchel Cars";
        acc.AccountNumber = "600123801";
        acc.SubscriptionKey = "2535-8254-8568-1192";
        acc.ValidUntil = DateTime.Now;

        var request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method = "POST";
        request.ContentType = "application/xml";
        request.ContentLength = 800;
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(Account));
        xmlSerializer.Serialize(request.GetRequestStream(), acc);
        var response = (HttpWebResponse)request.GetResponse();
        XmlSerializer serializer = new XmlSerializer(typeof(Account));
        var newAcc = (Account)serializer.Deserialize(response.GetResponseStream());
    }

我已经删除了任何错误检查或任何样板代码,以使其更易于阅读。严格来说,这是一个尖峰,只是为了实际开机自检。我的理解是你应该写信给GetRequestStream((。所有的阅读等似乎都可以正常工作,但我从来没有从请求中回来。获取响应((;

如果我做一个简单的得到它工作正常。我确实看到您可以使用一个名为HTTPClient的类来做这些事情,但我不能使用它,因为我需要让它适用于基于.Net 3.5的WinForms,Silverlight和Windows Phone

任何帮助将 POCO 推送到服务器都将是一个很大的帮助,干杯!

附加信息:

  • 目前我没有收到错误,测试应用程序只是挂起。
  • 如果我关闭 WebAPI 项目,我会收到找不到服务器的响应。
  • 我没有改变任何路线或任何路线。
  • 进入相同的控制器工作。

一些帮助发布到 ASP.NET 使用 C# 的 Web API

您需要关闭响应流。 我看到的大多数示例还显示了设置内容长度。 最好序列化为内存流,然后将该流的长度用作内容长度。 不幸的是,在.net 3.5中没有CopyStream,所以你可能不得不自己编写。

如果要使用 HttpClient,可以安装下载的 REST 初学者工具包。 并将 DLL 用作外部 DLL

http://forums.asp.net/t/1680252.aspx/1