2012-12-27 1 views
2

나는 창 승인을 가진 OData 웹 서비스가있다.데이터 서비스가 두 개의 자격 증명 대신 하나의 요청을 보내도록 만드는 방법은 무엇입니까?

connection = new BaseWCFService.ASUTBEntities(new Uri("pathtoservice")); 
connection.Credentials = CredentialCache.DefaultCredentials; 
string SID = System.Security.Principal.WindowsIdentity.GetCurrent().User.Value; 
var finduser = (from o in IS.connection.User 
       where o.SID == SID 
       select o).ToList(); 

이 코드는 하나가 아닌 두 가지 요청을합니다. 첫째, 인증과 정상 원자 요청을 전송 한 후, 간단한 텍스트/html로 요청을 보낼 수 (401) 오류가 발생하고 :

enter image description here

어떻게 그 인증 한 요청을 텍스트/html로 요청 전송을 방지 할 수 있도록?

답변

1

나는 다만 추측하고있다 그러나 나는 contructor가 webservice에 이미 연결하고 있다는 것을 말할 것입니다.

아마 같은 :

new BaseWCFService.ASUTBEntities(new Uri("pathtoservice"), CredentialCache.DefaultCredentials); 

또는

connection = new BaseWCFService.ASUTBEntities(); 
connection.Credentials = CredentialCache.DefaultCredentials; 
connection.Url = new Uri("pathtoservice"); 

그러나 다시 내가 추측하고있다. 그러나 첫 번째 요청에는 권한이 부여되지 않았으므로 자격자가 아직 자격 증명없이 연결하고있는 것처럼 보입니다. 이전에 함수를 재정의하고 기본 함수를 수행하기 전에 자격 증명을 추가하기 전에 유사한 맞춤 함수를 작성 했더니 해결되었습니다. (제 경우에는 초기화에서 결과를 얻고 싶었 기 때문에 여전히 두 가지 요청이 필요했습니다)

+0

아니요, webservice는 하나의 인수 만 허용하며 생성자에 대한 다른 재정의는 없습니다. 내 생각에 클라이언트는 서버가 허용한다는 것을 이해하기 위해 자격 증명을 보내지 않고 서비스에 연결하려고합니다. 하지만 난 그냥 필요하지 않습니다 =) – user666

+0

특정 IP (방화벽을 사용하여)로 나가는 연결을 차단하는 API 또는 기능이있을 수 있습니다. 나중에 다시 활성화 할 수 있습니다. 그 질문이 유용 할 경우 또는 잔인하지 않은 경우에도 문제가 남아 있습니다. –

+0

그래, 왜이 질문은 여기 =) 이중 요청을 방지하는 API 함수를 찾을 수 없습니다. – user666