C#에서 웹서비스 인터페이스를 사용할 때 서버로 반환되는 IP 주소에는 포트 번호가 동반됩니다. 하지만 때로는 해당 포트를 사용할 수 없고(예: 전달을 위해 nginx 사용) 서버 측에서 처리해야 합니다(처리 내용은 다음 코드입니다). 또한 구성 파일의 web.config에서 system.web에 항목을 추가해야 합니다.
<webServices>
<프로토콜>
<추가 이름="HttpGet"/>
<추가 이름="HttpPost"/>
<추가 이름="HttpSoap"/>
프로토콜>
<soapExtensionReflectorTypes>
<추가 유형="CommMethod.OuterPortReflector,CommMethod"/>
soapExtensionReflectorTypes>
webServices >
참고: 1. 유형 내용은 클래스 이름과 패키지 이름입니다. 이는 msdn에 있는 사람이 작성한 내용과 다소 다릅니다(버전 문제일 수 있음)(http://blogs.msdn.com/b/kaevans/archive/2005/11/16/493496.aspx).
2. 프로토콜에 내용이 없으면 게시 및 가져오기 요청이 올바르게 인식되지 않을 수 있습니다. (확인해본 적은 없지만 블로그 파크에서 비슷한 문제를 본 적이 있습니다.)
3.stackoverflow 소스 주소: http://stackoverflow.com/questions/1531448/asp-net-web-service-changes-port-on-invoke
코드:
//-------------------------------------- ---------------------
//
// * 저작권(C)
// * 버전 :
// * 작성자 : ying83811
// * 파일명 : OuterPortReflector.cs
// * 기록 : 작성자: ying83811
//
//------------------------------- - --------------
시스템 사용
System.Collections.Generic 사용;
System.Linq 사용;
System.Text 사용;
System.Web.Services.Description 사용;
네임스페이스 Better517Na.KoreaProductInterface.CommMethod
{
///
/// OuterPortReflector 클래스
///
public class OuterPortReflector: SoapExtensionReflector
{
///
gt;
/ // 다시 작성 ReflectDescript
/// & lt;/Summary & GT
공개 재정의 Void ReflectDescription ()
{
// 문제를 설명하기 위해 여기에 포트 번호를 직접 적는 것이 좋습니다. = ReflectionContext.ServiceDescription;
foreach (description.Services의 서비스 서비스)
{
foreach(service.Ports의 포트 포트)
{
foreach(port.Extensions의 ServiceDescriptionFormatExtension 확장)
~ 를 통해 ~ }
{
httpaddressBinding httpbinding = 확장 as httpaddressBinding;
if (httpbinding! = Null) httpbound.Location.replace (Portnum, String.Empty);
Soap12AddressBinding Soap12Binding = Soap12AddressBinding으로 확장;
~ 바꾸기(portNum, string.Empty);
}
🎜> }
}
위 내용은 관련 측면을 포함하여 WebService 포트 번호의 수정 사항을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.