2010-01-21 5 views
2

C#으로 작성된 웹 서비스를 사용하는 iPhone 응용 프로그램을 개발하려고합니다. 내 PC의 로컬 호스트 (http://localhost:54053/Service1.asmx)를 통해 웹 페이지에 액세스 할 수 있기를 원하므로 아직 웹 서비스를 살 필요가 없습니다. 이 작업을 수행하는 방법에 대한 권장 사항은 무엇입니까?네트워크에서 컴퓨터의 로컬 호스트에 액세스

대단히 감사합니다.

+0

컴퓨터에 IIS가 있습니까? – DyingCactus

+0

나는 아래 제안 된 방법을 시도 할 것이다. 제안 해 주셔서 감사합니다. –

답변

1

개발 컴퓨터에서 IIS를 사용해야합니다. 기본 제공 Cassini 서버는 127.0.0.1에 직접 바인드되며 로컬에서만 액세스 할 수 있습니다. 원격 장치에서 액세스하려면 IIS에서 호스트를 설정해야합니다. 카시니는 127.0.0.1로 제한되어 있으며 원격으로 액세스 할 수 없습니다.

127.0.0.1이 아닌 IP 주소에 응답하도록 웹 사이트를 설정하고 새 웹 서비스를 제공하도록 구성한 경우 IP 주소를 사용하여 연결할 수 있습니다.

0

먼저 로컬 IIS에서 웹 서비스 작업을해야이 작업을 수행하려면

http://localhost/Service1.asmx

처럼 작동합니다.

그런 다음 로컬 컴퓨터의 IP를 찾습니다.

www.whatismyipd.com 그런

은 다음과 웹 서비스를 호출 (이 창문이 떨어져 방화벽 전환하려고 할 방법을 잘 모르는 경우) 포트 80가 열려 있는지 확인 귀하의 IP 주소는 다음과 같습니다 : http://xxx.xxx.xxx.xxx/Service.asmx

+0

IIS를 통해 실행할 필요가 없습니다. 포트를 80 또는 54053으로 여는 것이 전부입니다. –

+0

54053은 카시니 포트이기 때문에 작동하지 않습니다. Cassini는 127.0.0.1에 직접 바인딩되며 그러한 방식으로 원격으로 액세스 할 수 없습니다. –

0

나는 당신이 Mac에서 실행되는 전화 또는 에뮬레이터 중 하나라고 가정합니다. 이것은 그들이 asp.net에서 개발 된 웹 서비스와 동일한 컴퓨터에 있지 않다는 것을 의미합니다.

컴퓨터에 연결할 수있는 IP로 "localhost"를 변경해야합니다. "ipconfig"를 실행하면됩니다. Mac이 서비스와 동일한 로컬 네트워크에 있다면 아마도 192.x.x.x 또는 10.x.x.x 일 것입니다.

예 : http://192.168.1.20:54053/Service1.asmx은 내 로컬 네트워크의 주소입니다.

인터넷 주소를 사용해야하는 경우 방화벽 포트를 열고 게이트웨이/라우터에서 포트 포워딩을해야하기 때문에 훨씬 더 복잡합니다.

1

내장 된 카시니 서버는 127.0.0.1에 직접 바인드되며 로컬에서만 액세스 할 수 있습니다. 당신은 트릭 을 시도 할 수 있습니다

는 그런 다음

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

같은 IPEndPoint로 소켓을 바인드 그

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

처럼 로컬 호스트 웹 서비스 주소에 소켓을 연결하고 다음에 웹 서비스에 액세스 클라이언트 서버 방식.

완전한 작업 예제는 here으로 볼 수 있습니다.


.

관련 문제