Xamarin.ios Monotouch/iPhone-当HTTP方法为DELETE时,对HttpWebRequest.GetRequestStream()的调用连接到服务器

Xamarin.ios Monotouch/iPhone-当HTTP方法为DELETE时,对HttpWebRequest.GetRequestStream()的调用连接到服务器,xamarin.ios,httpwebrequest,http-method,Xamarin.ios,Httpwebrequest,Http Method,我的场景: 我正在使用Monotouch for iOS创建iPhone应用程序。我正在调用基于ASP.NEt MVC 4 Web API的http服务来登录/注销。对于登录,我使用PostWebMethod,一切都很好。对于注销,我调用deleteb方法。我想将JSON数据(序列化的复杂数据)传递给Delete调用。如果我将简单数据(如单个字符串参数)作为URL本身的一部分传递,那么一切都很好,即删除确实有效!为了传递复杂的Json数据,下面是我的调用(我调整了代码,通过只显示一个参数——通过

我的场景: 我正在使用Monotouch for iOS创建iPhone应用程序。我正在调用基于ASP.NEt MVC 4 Web API的http服务来登录/注销。对于登录,我使用PostWebMethod,一切都很好。对于注销,我调用deleteb方法。我想将JSON数据(序列化的复杂数据)传递给Delete调用。如果我将简单数据(如单个字符串参数)作为URL本身的一部分传递,那么一切都很好,即删除确实有效!为了传递复杂的Json数据,下面是我的调用(我调整了代码,通过只显示一个参数——通过Json发送的用户名,使其变得简单):

在服务器上,Delete方法具有以下定义:

public void Delete(Credentials user)
其中凭据是复杂类型

现在,问题来了

上面的代码,在服务器上的Delete方法命中后立即进入:

req.GetRequestStream()
因此,发送到Delete方法的参数最终为null

这里是奇怪的部分: 如果我使用与test VS 2010 windows应用程序完全相同的代码,那么即使上面的代码也可以工作…也就是说,在调用req.GetResponse()之前,它不会调用Delete!在这个场景中,Delete方法的参数是一个有效的对象

问题

有什么想法吗?或者这是Monotouch的一个bug,如果有,有什么解决方法吗

注意:

如果我将删除定义更改为public void Delete(字符串用户名)
如果我将参数作为url本身的一部分传递,而不是json,那么一切都很好。但就像我说的,这只是一个简单的例子来说明我的问题。感谢您的帮助

这似乎定义不清。有关更多详细信息,请参见此问题:

一般来说,MonoTouch(基于Mono)将尝试与Microsoft.NET framework的功能/缺陷兼容,以简化平台间的代码可移植性


如果MS.NET忽略了DELETE方法的主体,那么MonoTouch也会忽略。如果行为不同,则应在Hi poupou填写错误报告,谢谢您的回复。我确实查看了这个链接——虽然早期的评论表明身体被忽略了,但有一个更新的评论说它是允许的。无论如何,正如我在最初的消息中提到的,同样的代码在VisualStudio2010 windows窗体应用程序中也能工作,也就是说,它不会忽略发送的额外json数据。听起来我应该提交一份关于bugzilla的报告。如果你不这么认为,请告诉我,否则我会这么做。@AMSIDev你能发布bugzilla报告的URL吗?谢谢!
req.GetRequestStream()