2012-09-14 1 views
0

누군가가 Visual Studio Tools for Applications를 사용하여 Infopath 응용 프로그램을 SOAP로 보내야하는 WCF를 사용하여 작성된 서비스에 연결하는 것을 돕고 있습니다. 헤더 (clientCredentialType = "UserName"). 서비스가 basicHttpBinding을 사용 중입니다.ClientCredentialType = "UserName"으로 WCF 서비스 사용 .Net 2.0에서

Infopath 2010은 Visual Studio Tools 2005 응용 프로그램에 의존하기 때문에 "서비스 참조"대신 "웹 참조"를 추가해야했습니다. 나는 전에 이것을 할 필요가 없었고, 어떻게해야 할지를 고민하면서 매우 문제가되었다.

service.Credentials.UserName.UserName = "username"; 
service.Credentials.UserName.Password = "password"; 

을하지만 웹 속성이 다르게 동작하는 자격 증명을 참조하여 소모 때 나는 그것이 자동으로 SOAP 헤더에 사용자 이름과 암호를 전달받을 수 없습니다 서비스 참조에

난 그냥 말한다.

나는 운없이이 포함 몇 가지를 시도 :

MyService service = new MyService(); 
CredentialCache cache = new CredentialCache(); 
// I've tried "Basic" and string.Empty as well in the place of "UserName" 
cache.Add(new Uri(service.Url), "UserName", new NetworkCredential("username", "password")); 
service.Credentials = cache; 
service.PreAuthenticate = true; 

service.MyMethod(); 

MyService service = new MyService(); 

service.Credentials = new NetworkCredential("username", "password"); 

service.MyMethod(); 

하지만 전혀 운이 없었 없습니다. 서비스에서 전체 메시지를 로깅하면 사용자 이름과 암호가 SOAP 헤더에 전혀 포함되지 않고 다음과 같은 오류 메시지가 나타납니다. "메시지의 보안을 확인할 때 오류가 발생했습니다."

+0

안녕하세요,이 문제가 있습니까? 나는 비슷한 것을 필요로한다. 내 경우에는 자바 응용 프로그램을 통과하는 방법을 찾고 있는데 비누 헤더의 사용자/암호는 wcf 서비스에서 유효성을 검사합니다. 감사! – Roberto

+0

대답은 실제로 .Net 2.0에서 자동으로 수행 할 수 없다는 것입니다. 그러나 Java의 경우에는 대답이 완전히 다를 수 있습니다. 필자는 수동으로 SOAP를 구성하고 서버에 게시함으로써 안드로이드 애플 리케이션 (물론 자바였다)에서 게으른 경로를 갔다. – omatase

답변

1

정말로 대답은 .Net 2.0에서 자동으로 할 수 없다는 것입니다.

0

WCF가 ASMX를 대체 한 이유가 있습니다. 보안 표준 지원도 그 중 하나입니다.

VSTA를 사용하는 경우 COM 개체를 사용할 수 있다고 가정합니다. .NET 3.5 (.NET 2.0 SP2와 일부 추가 라이브러리)를 사용하여 COM 객체를 만들 수 있습니다. 이 COM 개체는 WCF 서비스 참조를 사용하여 서비스를 사용할 수 있지만 COM 만 노출합니다. COM 객체를 사용할 수있는 모든 코드는 "프록시 객체"를 사용할 수 있습니다.