我在IIS Express上托管的Azure移动服务遇到了一个奇怪的问题。我搜索了SO和网络,但我找不到任何适合我的问题的东西,所以这里是:
当我在Visual Studio中创建一个新的Azure移动服务项目(VS 2013 Upd.4,Azure Tools 2.2,管理员模式)时,一切看起来都很好,我可以按预期通过它进行交互测试(Ctrl +)F5后弹出的网页。
但是,当我尝试以编程方式从客户端调用服务时,例如就像在这个测试中一样
[TestFixture]
public class Fixture
{
private static readonly MobileServiceClient ServiceClient =
new MobileServiceClient("http://localhost:64481/");
[Test]
public async void Test()
{
IMobileServiceTable<TodoItem> table = ServiceClient.GetTable<TodoItem>();
List<TodoItem> items = await table.ToListAsync();
Assert.That(items.Count, Is.EqualTo(2));
}
}
...然后我(大部分时间)都无法访问该服务,我得到了这个例外:
System.Net.Http.HttpRequestException : An error occurred while sending the request.
----> System.Net.WebException : Unable to connect to the remote server
----> System.Net.Sockets.SocketException : A connection attempt failed because the connected party did not properly respond after a period of time or established connection failed because connected host has failed to respond [::1]:64481
奇怪的是,上述测试偶尔会成功,但大部分时间都会因此异常而失败。我发现这背后没有任何规律性。如果IISExpress刚刚启动并且测试网页是开放的,那么它似乎有更大的机会成功,但这不是一个严格的规则。
到目前为止,我已使用ProcessMonitor监视iisexpress.exe
进程并从控制台手动执行命令行(管理模式)。当我这样做时,测试页面再次按预期工作,我可以在控制台看到请求。我还可以看到,在错误情形中没有请求到达Web服务器。很明显,它会被预先出现的链中的东西所阻挡。
备注:错误也会在没有任何防火墙运行的情况下发生。
我完全坚持这一点,不知道问题可能是什么,甚至不知道我能做些什么来找出发生了什么。对此有任何帮助表示赞赏。