이 문제이지만, 그것으로 표시되는 문제가 아니다.
코드를 사용하는 모든 프로젝트에서 실제로 서비스 참조가 필요하지 않습니다. app.config에서 필요한 정보 만 있으면됩니다. 특히, Y 인딩 및 엔드 포인트 주소. 코드에 코드를 하드 코딩하면 코드를 잘 참조 할 수 있어야합니다.
가장 간단한 경우 :
var request = new MyServiceRequest { /* set properties here */ };
var client = MyServiceReferenceClient(new BasicHttpBinding(), new EndpointAddress(@"https://my.service.com/path/to/service"));
var channel = client.ChannelFactory.CreateChannel();
var result = channel.MyService(request);
당신은 app.config 파일에, 그리고 URL이도 나오는 것과 일치하는
BasicHttpBinding
에 대한 몇 가지 4. 기본값을 설정할 수 있습니다
.
기본적으로 작동하지 않는 이유는 this answer을 참조하십시오.
편집 : 코드를 들어, 당신은 단지의 라인을 따라 뭔가 new Account_SSPSoapClient();
을 대체 할 것 :
다른
new Account_SSPSoapClient(new BasicHttpBinding(), new EndpointAddress(@"https://my.service.com/path/to/service"));
모두가 동일하게 가야한다,하지만 대신 그 값을 사용합니다 app.config 값 (매개 변수없이 수행하는 값) 같은 대한 app.config 파일에
봐 : 그에서
<bindings>
<basicHttpBinding>
<binding name="LabelRecoveryBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
모든 당신이 위에서 만든 BasicHttpBinding
개체에 설정할 수있는 속성에 해당
- 그것의 대부분은 기본값입니다,하지만 당신은 할 수있다 안전을 위해 모든 것을 수동으로 설정하려고합니다.
마찬가지로, 당신은 무엇 URL입니다 new EndpointAddress
에 전원을 공급하기 알려줍니다
<client>
<endpoint address="http://153.2.133.60:48010/xoltws_ship/LBRecovery"
binding="basicHttpBinding" bindingConfiguration="LabelRecoveryBinding"
contract="UPSLabelRecoveryService.LabelRecoveryPortType" name="LabelRecoveryPort" />
</client>
를 찾습니다.
약간 설명해 주시겠습니까? 해당 코드 스 니펫이 클래스 라이브러리 또는 해당 프로젝트를 참조하는 프로젝트로 이동합니까? – Logarr
@Logarr - 편집 됨 - 도움이 되셨습니까? 이미 (아마도) 이미 전화를 건 것은 클래스 라이브러리에 있습니다. – Bobson
아니요 ... 저는 지금 API를 호출하는 방법의 예를 보여주기 위해 질문을 편집했습니다. 나는이 경우에 당신의 방법을 적용하는 방법을 보지 못했다. – Logarr