xamarin iOS的NSURLSession CreateUploadTask失败
我正在尝试使用NSURLSession将对象上载到我的WebAPI,以便在后台执行此操作。我的Web API是可操作的-我的问题是客户端代码访问CreateUploadTask()方法,然后抛出异常。这是一个空异常,输出窗口中也没有任何内容。因此,根本没有任何迹象表明问题出在哪里。我用来启动的代码在这里xamarin iOS的NSURLSession CreateUploadTask失败,ios,asp.net-web-api,xamarin.ios,xamarin,Ios,Asp.net Web Api,Xamarin.ios,Xamarin,我正在尝试使用NSURLSession将对象上载到我的WebAPI,以便在后台执行此操作。我的Web API是可操作的-我的问题是客户端代码访问CreateUploadTask()方法,然后抛出异常。这是一个空异常,输出窗口中也没有任何内容。因此,根本没有任何迹象表明问题出在哪里。我用来启动的代码在这里 private NSUrlSessionConfiguration configuration = NSUrlSessionConfiguration.BackgroundSession
private NSUrlSessionConfiguration configuration = NSUrlSessionConfiguration.BackgroundSessionConfiguration ("com.SimpleBackgroundTransfer.BackgroundSession");
private NSUrlSession session;
public void SendBackgroundMessage(AppMessage m)
{
session = NSUrlSession.FromConfiguration(configuration, new UploadDelegate(), new NSOperationQueue());
NSUrl uploadHandleUrl = NSUrl.FromString(Constants.ApiUrl + "api/AppMessage/Send");
NSMutableUrlRequest request = new NSMutableUrlRequest(uploadHandleUrl);
request.HttpMethod = "POST";
request["Content-Type"] = "application/json";
var keys = new object[] { "Authorization" };
var objects = new object[] { _accessToken };
var dictionary = NSDictionary.FromObjectsAndKeys(objects, keys);
request.Headers = dictionary;
string json = JsonConvert.SerializeObject(m);
var body = NSData.FromString(json);
var uploadTask = session.CreateUploadTask(request, body);
uploadTask.Resume();
}
我怀疑这与我序列化为json并创建NSData对象的方式有关。任何关于这一点的建议都将非常感谢
编辑:好的,如果我删除body参数,上传任务将创建一个良好的。这与我编写json的方式有关。您可以将XS调试器配置为在所有异常情况下停止。引自: 使用“运行->新建断点”菜单或“新建断点”按钮 在断点键盘中,将新断点设置为“当 “引发异常”
一旦到达该异常断点,
NullReferenceException
,与大多数.NET异常一样,应该为您提供额外的详细信息,包括堆栈跟踪,其中应该包括发生的行号 这是通过先将json字符串保存到磁盘来解决的。然后在上传任务中使用它,如下所示
string json = JsonConvert.SerializeObject(m);
var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine(documents, m.AppMessageId.ToString());
File.WriteAllText(filename, json);
var uploadTask = session.CreateUploadTask(request, NSUrl.FromFilename(filename));
对不起,我没有解释清楚。它不是NullReferenceException。。它只是空的。它在try-catch中,在catch中异常变量为null:-O。除了在iOS中使用xamarin外,我在任何地方都没有看到过这种情况。