.net 无法解析远程名称:';api.parse.com';
我正在.NET通用应用程序中使用解析API。我已将解析库添加到PCL中,然后将.NET WinRT库与实际的Windows RT项目一起包含。以下是我的服务电话.net 无法解析远程名称:';api.parse.com';,.net,windows-runtime,parse-platform,.net,Windows Runtime,Parse Platform,我正在.NET通用应用程序中使用解析API。我已将解析库添加到PCL中,然后将.NET WinRT库与实际的Windows RT项目一起包含。以下是我的服务电话 public async Task<IEnumerable<BasicTask>> GetTasksAsync() { ParseQuery<ParseObject> query = ParseObject.GetQuery(typeof(BasicTask).Name); IEnum
public async Task<IEnumerable<BasicTask>> GetTasksAsync()
{
ParseQuery<ParseObject> query = ParseObject.GetQuery(typeof(BasicTask).Name);
IEnumerable<ParseObject> parseObjects = await query.FindAsync();
// Convert the parse objects returned from the cloud into our local model representation.
// We do this in order order to maintain support for the model across multiple cloud services
// instead of restricting ourselves to the entire app using ParseCloud only.
return parseObjects.Select(po => this.ConvertParseObjectToDutyTask(po));
}
我从Parse中取回所有记录(仅1个atm)
当我在Windows App Store应用程序中使用相同的方法时,我得到一个无法解析远程名称:“api.parse.com”
异常。目前,我正在页面加载事件中调用它。事件处理程序在我的视图模型中调用一个initialize方法,该方法要求存储库执行所有任务。存储库从服务获取任务并返回它
页面
private async void pageRoot_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
if (!(this.DataContext is MainPageViewModel))
{
return;
}
var vm = this.DataContext as MainPageViewModel;
await vm.Initialize();
this.TasksList.ItemsSource = vm.Tasks;
}
查看模型
public async Task Initialize()
{
try
{
IEnumerable<BasicTask> tasks = await this.repository.GetTasksAsync();
this.tasks = new ObservableCollection<BasicTask>(tasks);
}
catch (Exception)
{
throw;
}
}
有人知道为什么它在单元测试中运行良好,但在应用程序中却无法访问服务吗?我使用的异步模式是否错误?我不确定这是否会影响它,因为异常发生在调用解析服务时
编辑
为了澄清,我有一个WinRT项目,它引用了一个通用PCL存储库库和一个通用PCL服务库。调用后立即等待query.FindAsync()代码>它失败了。我的单元测试是一个标准的Windows单元测试项目,它引用了完全相同的两个PCL库。两者之间的唯一区别是一个是WinRT,另一个是标准的Windows单元测试。两者都使用相同的库,并且都使用async进行调用。这两个库的目标都是Windows 8、Windows Phone 8和.NET 4.5
我是否必须授予我的应用程序特殊权限才能允许在WinRT设备上进行网络访问
任何帮助都会很棒 我终于解决了这个问题。您必须修改Package.appxmanifest文件,以告知设备应用程序需要出站internet权限。这解释了为什么单元测试有效而应用程序无效
当我在应用程序上启用internet权限时,网络呼叫成功,我从Parse返回了数据。我希望这个框架会抛出一个InternetCapabilityNotSet
异常之类的东西。当没有设置正确的功能时,它当前正在抛出的任何内容。您是否有可能使用代理?很明显,您的应用程序无法解析api.parse.com名称。正如@YuvalItzchakov所言,这可能是一个代理问题。您可能想使用Fiddler查看您的请求/响应。我不是通过代理。正如我提到的,单元测试通过了,但应用程序失败了。两者都在同一台机器上,采用相同的解决方案。所以我不知道为什么应用程序不能解决它。
public async Task Initialize()
{
try
{
IEnumerable<BasicTask> tasks = await this.repository.GetTasksAsync();
this.tasks = new ObservableCollection<BasicTask>(tasks);
}
catch (Exception)
{
throw;
}
}
public async Task<IEnumerable<BasicTask>> GetTasksAsync()
{
IEnumerable<BasicTask> tasks = await this.service.GetTasksAsync();
return tasks;
}
System.Net.Http.HttpRequestException was unhandled by user code
HResult=-2146233088
Message=An error occurred while sending the request.
Source=mscorlib
StackTrace:
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Parse.PlatformHooks.<RequestAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Parse.Internal.InternalExtensions.<>c__DisplayClass7`1.<OnSuccess>b__6(Task t)
at System.Threading.Tasks.ContinuationResultTaskFromTask`1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Parse.Internal.InternalExtensions.<>c__DisplayClass7`1.<OnSuccess>b__6(Task t)
at System.Threading.Tasks.ContinuationResultTaskFromTask`1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Duty.Services.ParseCloud.ParseCloudTaskService.<GetTasksAsync>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Duty.Repositories.Tasks.BasicTaskRepository.<GetTasksAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Duty.WindowsAppStore.ViewModels.MainPageViewModel.<Initialize>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at Duty.WindowsAppStore.Views.MainPage.<pageRoot_Loaded>d__0.MoveNext()
InnerException: System.Net.WebException
HResult=-2146233079
Message=The remote name could not be resolved: 'api.parse.com'
Source=System
StackTrace:
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
InnerException: