2010-01-21 135 views
2

我想开发一个iPhone应用程序来使用C#编写的Web服务。我希望能够通过我个人电脑上的本地主机(http://localhost:54053/Service1.asmx)访问网页,因此我不需要直接推送Web服务。有关如何做到这一点的任何建议?从网络上的计算机访问Web服务本地主机

非常感谢。

+0

你的电脑上有IIS吗? – DyingCactus 2010-01-21 20:52:17

+0

我这样做,我会尝试下面建议的方法。谢谢大家的建议。 – 2010-01-21 21:39:18

回答

1

您将不得不在开发机器上使用IIS。内置的Cassini服务器直接绑定到127.0.0.1,并且只能在本地访问。要从远程设备访问它,您需要在IIS中设置主机。卡西尼对127.0.0.1有限制,不能远程访问。

一旦你有一个网站设立的答案是不是127.0.0.1的IP地址,它的配置,以满足您新的Web服务,那么您可以使用IP地址来得到它。

0

首先使它工作像

http://localhost/Service1.asmx

要做到这一点,你必须让本地IIS中的Web服务的工作。

然后找到你的本地机器的IP。

www.whatismyipd.com

然后肯定的是,80端口是开放的(如果你不知道如何做到这一点请尝试关闭Windows防火墙关闭)

然后调用与Web服务你的IP地址如下: http://xxx.xxx.xxx.xxx/Service.asmx

+0

无需通过IIS运行它。这是关于打开端口是80或54053. – 2010-01-21 20:54:06

+0

54053将无法正常工作,因为这是一个卡西尼端口。 Cassini直接绑定到127.0.0.1,不能以这种方式远程访问。 – 2010-01-21 20:57:27

0

我假设你有一个手机或模拟器在mac上运行。这意味着它们与您在asp.net开发的web服务不在同一台机器上。

你需要为“localhost”更改为您的计算机可以达到的IP。你可以通过运行“ipconfig”来做到这一点。如果这个mac与你的服务在同一个本地网络上,这可能是192.x.x.x或10.x.x.x。

例如:http://192.168.1.20:54053/Service1.asmx将是我的本地网络上的地址。

如果需要使用Internet地址它要复杂得多,因为你极有可能打开防火墙端口和一个网关/路由器做端口转发。

1

内置的卡西尼服务器直接绑定到127.0.0.1,仅在本地访问。

您可以尝试一招 安装一个插座到localhost Web服务地址一样,

var localSocket =new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
       localSocket .Connect(new IPEndPoint(IPAddress.Loopback, localPortnumber)); 

然后将套接字绑定到IpEndPoint像

Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
       listener.Bind(new IPEndPoint(IPAddress.Any, 8080)); 

然后在访问Web服务客户端服务器时尚。

一个完整的工作示例可以看出here


相关问题