I've got a ASP.Internet Web Service on IIS, that's focusing on port 8080. On port 80 I've Apache, that's redirecting some internet sites to IIS.

About this situation, I'm able to access the net Service page (http://xxx.com/service/), which provides me all of the techniques available. However, after i attempt to invoke a technique, it is going to some web site like that one: http://xxx.com:8080/service/Service1.asmx/Method. Obviously that the public access cannot use whatever result, the main harbour 8080 is blocked and cannot be opened up.

Internally, the net Service creates port 8080, however the public request have to be completed to the main harbour 80.

Anybody knows how do i solve my problem?

P.S.: Using IIS 7 and Apache 2.2 under Home windows Server 2008

Probably the most likely reason behind this is your web service produced WSDL will define the service endpoint address as:


You can give a separate static WSDL definition and customize the following section to make use of port 80:

<wsdl:service name="Service1"> 
    <wsdl:port name="Service1Soap" binding="tns:Service1Soap"> 
        <soap:address location="http://xxx.com:8080/service/service1.asmxx" /> 
    <wsdl:port name="Service1Soap12" binding="tns:Service1Soap12"> 
        <soap12:address location="http://xxx.com:8080/service/service1.asmx" /> 

This will make the client to eat the WSDL and generate stub code to bind towards the correct port (the Apache server serving as a proxy).

Another alternative approach to pressure the right address to look within the produced WDSL is by using a SoapExtensionReflector to change the address location quickly:

Modify an internet Service's WSDL Utilizing a SoapExtensionReflector

I have tried personally the above mentioned method effectively previously.

Alternatively, you can, when the client is .Internet based, override the bottom URL for that service:

WebClientProtocol.Url Property (MSDN Library)