将System从iphone发布到.NET webservice时出现'System.InvalidOperationException:请求格式无效:multipart/form-data'错误

Abe*_*bel 7 .net web-services file-upload objective-c

我正试图将图像从iphone应用程序发布到.Net webservice,我遇到了这个错误.我已经根据这篇kb文章更新了我的web.config ,我可以成功发布到以字符串为参数的方法.我的问题是尝试使用图像发布数据.我试过这种方式那种方式发布,但两种方式我最终都会遇到同样的错误:


System.InvalidOperationException: Request format is invalid: multipart/form-data; charset=utf-8; boundary=0xKhTmLbOuNdArY.
   at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
Run Code Online (Sandbox Code Playgroud)

这是我的webservice签名:


[WebMethod]
public XmlDocument UploadImageToServer(string usertoken, byte[] image)
{ 
   //stuff happens in here
}
Run Code Online (Sandbox Code Playgroud)

..这是我最近的尝试:


- (void)sendImageToServer:(NSURL *)serivceURL withUserToken:(NSString *)usertoken
{
 NSData *imageData = UIImageJPEGRepresentation(self.selectedImage, 1.0f);

 ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:serviceURL] autorelease];
 [request setPostValue:usertoken forKey:@"usertoken"];
 [request setData:imageData forKey:@"image"];
 [request setDelegate:self];
 [request startAsynchronous];

 NSLog(@"We set the request out!");

}
Run Code Online (Sandbox Code Playgroud)

此外,我将我的httpRuntime最大请求长度增加到40MB(<httpRuntime maxRequestLength="40960"/>)只是为了确保问题不是我的图像大小,但错误仍然存​​在.

任何帮助,将不胜感激.

-一个

小智 6

我通过将它们移动到web.config中的行来实现这一点:

<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)

它们放在<system.webServer><handlers>web.config 中的部分底部,但是因为我将它们移到顶部它似乎工作!