我有两个不同的项目:
我的目标很简单:
使用从真实设备运行的WP8应用程序,在将WebAPI控制器部署到Azure仿真器时访问(使用HTTPClient)。
做什么工作:
答案 0 :(得分:10)
我弄清楚如何让手机模拟器或连接的物理Windows Phone设备与Azure模拟器进行通信。
对于其他挣扎于同一要求的开发人员,以下是其工作所需的步骤:
"C:\Program Files\Microsoft SDKs\Windows Azure\Emulator\devfabric\DevFC.exe.config"
进行修改。"VipPoolStartIPAddress"
和"VipPoolEndIPAddress"
设置为您的托管计算机IP(例如192.168.1.100)"C:\Program Files\Microsoft SDKs\Windows Azure\Emulator\devstore\DSServiceLDB.exe.config"
和"C:\Program Files\Microsoft SDKs\Windows Azure\Emulator\devstore\DSServiceSQL.exe.config"
进行修改。services
部分以使用托管IP。Windows Azure storage emulator
设置):
Role
(在解决方案资源管理器中的“角色”文件夹下),输入Properties
页面。点击Settings
标签。请务必修改Local
设置(在Service Configuration
选择框中选择)。accounts
DSServiceSQL.exe.config
部分下
享受!
答案 1 :(得分:3)
您不需要任何外部应用程序来执行此操作。使用以下方法尝试端口转发:
在Azure模拟器中运行您的应用程序,然后通过右键单击系统托盘中的IIS Express图标(例如127.0.0.1:81)了解其IP和端口
现在选择一个要监听的端口(例如8088)并通过在提升的命令提示符中执行以下命令将其传入的请求转发到您的应用程序:
netsh interface portproxy add v4tov4 listenport=8088 connectaddress=127.0.0.1 connectport=81 protocol=tcp
如果防火墙正在运行且您选择的端口被阻止,则通过向Windows防火墙添加入站规则来打开端口(本例中为8088)。
现在使用您的计算机IP浏览,如192.168.0.100:8088,现在您应该可以访问您的应用程序了。这可以通过您的WP或Cordova(移动)应用程序在本地进行测试。希望这会有所帮助。
(如果要删除端口转发,只需使用 netsh interface portproxy 命令的 delete 开关。)
答案 2 :(得分:2)
由于您已经在使用(常规)IIS
并且声称它有效,因此您可以使用Server Farming
作为某种Reverse Proxy
+ Load Balancer
来实现你的目标:
运行您的WebRole项目并保存内部网址(如图像127.255.0.2:82
中所示)。
打开IIS Manager
> Server Farms
> Create Server Farm
。
选择一个名称,然后点击Next
。在下一个面板(“添加服务器”)中添加您在步骤1和Finish
中收集的所有网址。
当系统询问您是否要为此服务器场创建相应的Yes
时,请点击Rewrite Rules
。
在Server Farms
列表下,点击您的新服务器场并从右侧的图标中选择Proxy
,然后选中Reverse rewrite host in response headers
复选框。
您现在可以使用常规IIS绑定地址访问Emulator
个实例(一旦运行)。
P.S:如果要撤消此更改,请删除服务器场。然后单击左侧树中的计算机/服务器名称(根项目),选择右侧的Url Rewrite
,然后删除ARR
规则。
答案 3 :(得分:2)
我知道这已经得到了解答,但目前尚未发布此问题的简单解决方案。以下是我让我的Mac与我的局域网上运行的我的Azure存储模拟器(v4.3)进行通信所做的工作。
在撰写本文时,我正在使用Azure存储模拟器的v4.3运行Windows 10版本1511.
Azure Storage Emulator
来找到它。一旦打开,请输入AzureStorageEmulator stop
。ipconfig
。找到IPV4地址 - 应该类似于192.168.1.xxx
C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe.config
StorageEmulatorConfig
部分中,编辑每项服务,使其如下所示。显然要更换" xxx.xxx.xxx.xxx"用你的实际IP地址...但保持端口相同! StorageEmulatorConfig
部分中列出的上述三个端口。在控制面板下 - >系统和安全 - > Windows防火墙 - >高级设置 - >入站规则,点击屏幕右侧的New Rule...
。您将通过向导运行以设置新规则。我将概述下面要做的事情:规则类型:选择
Custom
计划:选择
Customize...
,然后选择Apply to services only
协议和端口:将
Protocol type
设置为TCP
并设置Remote port
到Specific Ports
并在输入框中输入10000-10002
。这将添加指定的端口范围StorageEmulatorConfig
部分遵循此规则,然后允许 通过这些端口的传入连接。范围:跳过此部分,将其应用于所有IP地址 简单的缘故
操作:允许连接
个人资料:根据您运行的连接配置文件,您可以 应该选择合适的一个。就我而言,我的电脑是 连接到我家的局域网,所以我连接到私人 网络。我取消选择了
Domain
和Public
。我建议做 同样的。名称:Azure存储模拟器
点击结束,你完成了...... ......那部分......
打开管理员提升的命令提示符并输入以下命令(注意:将xxx.xxx.xxx.xxx替换为您的IP地址!!!):
netsh http add urlacl url=http://xxx.xxx.xxx.xxx:10000/ user=everyone
netsh http add urlacl url=http://xxx.xxx.xxx.xxx:10001/ user=everyone
netsh http add urlacl url=http://xxx.xxx.xxx.xxx:10002/ user=everyone
在您尝试连接Azure存储模拟器的设备上打开浏览器,并尝试访问以下网址:
http://xxx.xxx.xxx.xxx:10002/
http://xxx.xxx.xxx.xxx:10002/
http://xxx.xxx.xxx.xxx:10002/
如果您收到回复,请回复:
InvalidUri请求的URI不代表服务器上的任何资源。
那么你就是金色......如果没有,请发表评论,我会更新我的回复。
重要的是要注意,您必须更新项目的.config文件中的连接字符串,在该文件中您要生成访问图像的网址(假设您正在做的事情) )。您可能不会更长时间地使用开发连接线!必须更新为:(将xxx.xxx.xxx.xxx替换为上面的IP地址:
DefaultEndpointsProtocol = HTTP;帐户名= devstoreaccount1; AccountKey = Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq / K1SZFPTOtr / KBHBeksoGMGw ==; BlobEndpoint = http://xxx.xxx.xxx.xxx:10000/devstoreaccount1;TableEndpoint=http://xxx.xxx.xxx.xxx:10002/devstoreaccount1;QueueEndpoint=http://xxx.xxx.xxx.xxx:10001/devstoreaccount1;
如果您在AppSettings部分中有这个并且使用\ n' s很好地格式化它,那么您将打破该字符串,并且存储组件不会将其识别为有效的连接字符串。所以保持一个很长的烦人的字符串。
答案 4 :(得分:1)
我找到了一种方法,感谢this great post。
显然,通过将发送到我本地IP地址(例如192.168.0.1)的任何流量重新路由到127.0.0.1,我现在可以对Azure Cloud Emulator实例使用Windows Phone 8 Emulator。
我做路由的方式是使用名为PassPort的简单应用,但我认为有很多替代方案。
答案 5 :(得分:0)
由于Azure模拟器的不稳定性,建议使用端口转发。但是,当connectaddress
使用我的Windows 7上的内置工具netsh
时,{{1}}为127.0.0.1时,它无法正常工作(有关详细信息,请参阅problem with adding a portproxy using netsh)。我搜索并找到PassPort port forwarding utility Win XP来帮助我进行端口转发。