【发布时间】:2015-06-12 02:18:50
【问题描述】:
我有一个 WinRt 通用应用程序,并且只使用 VS2015CTP Ultimate(没有第 3 方软件)。 Phone Emulator 连接到 Azure,但 Windows Simulator 需要通过 Http 代理服务器。我不在公司防火墙内。但是,如果我使用 Fiddler 并让应用程序使用它的 Http 代理服务器,那么模拟器就可以工作。 我根本不想使用 Fiddler,所以我的问题是,如何让模拟器在没有 Fiddler 帮助的情况下调用我的 Azure 移动服务?
我认为代码不会有什么不同,因为它对手机和 Windows 都是一样的。但是,这是代码,下面是错误。
//In Appl.xaml, VS2015 creates this code:
public static Microsoft.WindowsAzure.MobileServices.MobileServiceClient myMobileClient =
new Microsoft.WindowsAzure.MobileServices.MobileServiceClient(
"https://nameofmobileservice.azure-mobile.net/",
"***************************");
//I added:
private IMobileServiceTable<MyResultData> GetMyResultDataTable()
{
IMobileServiceTable<MyResultData> myResultDataTable = null;
try
{
myResultDataTable = App.myMobileClient.GetTable<MyResultData>();
}
catch (System.Exception e)
{
System.Diagnostics.Debug.WriteLine(e.InnerException);
}
return myResultDataTable;
}
//This is the call that fails in Windows simulator, but works in phone emulator:
public async Task InsertTacticResultData(MyResultData data)
{
IMobileServiceTable<MyResultData> myResultDataTable = GetMyResultDataTable();
try
{
await myResultDataTable.InsertAsync(data);
}
catch (System.Exception e)
{
System.Diagnostics.Debug.WriteLine(e.StackTrace);
System.Diagnostics.Debug.WriteLine(e.Message);
System.Diagnostics.Debug.WriteLine(e.InnerException);
}
}
错误:发送请求时出错。 “MyUniversal.Windows.exe”(CLR v4.0.30319:沉浸式应用程序 域):已加载 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.DLL'。 System.Net.WebException:无法解析远程名称: 'mymobileservice.azure-mobile.net' 在 System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult、TransportContext& 上下文)在 System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult a) 堆栈跟踪:
类型的第一次机会异常 “System.Net.Http.HttpRequestException”发生在 mscorlib.dll 中 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter
1.GetResult() at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.<SendRequestAsync>d__1d.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.TaskAwaiter1.GetResult() 在 Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.d__4.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.<>c__DisplayClass10.<<InsertAsync>b__f>d__12.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.TaskAwaiter1.GetResult() 在 Microsoft.WindowsAzure.MobileServices.MobileServiceTable.d__41.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.<InsertAsync>d__17.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.TaskAwaiter1.GetResult() 在 Microsoft.WindowsAzure.MobileServices.MobileServiceTable1.<TransformHttpException>d__38.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.TaskAwaiter1.GetResult() 在 Microsoft.WindowsAzure.MobileServices.MobileServiceTable1.<InsertAsync>d__b.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()1.d__5.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at Microsoft.WindowsAzure.MobileServices.MobileServiceTable
在 MyUniversal.Azure.AzureHelper.d__6.MoveNext()
【问题讨论】:
-
你的代码是什么?错误是什么?您是否有可能会影响此问题的病毒扫描程序?如果您在本地而不是通过模拟器运行它会起作用吗?模拟器只是一个远程桌面会话,而手机是具有虚拟 NIC 的实际 Hyper-v 实例。
-
我添加了代码和错误。模拟器可以通过浏览器进行常规调用。不确定您所说的“本地”是什么意思。但是,我可以将其作为 ASP.NET 项目运行,如下所述:msdn.microsoft.com/en-us/library/windows/apps/xaml/…
-
为什么需要使用代理?
-
然后代码在模拟器中工作,这基本上就是这篇文章的主题——为什么我需要代理?
-
一个调试目标选项是“本地机器”。你试过用那个代替模拟器吗?根据您发布的堆栈,DNS/名称解析失败。
标签: azure windows-runtime win-universal-app