2013-08-23 2 views
1

The type provider 'Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders' reported an error: Error reading schema. The remote server returned an error: (401) Unauthorized.ODataService 유형 공급자 오류 : (401) 승인되지 않음

사용자 이름과 암호가 필요한 OData 서비스에서 OData 유형 공급자를 사용하는 방법이 있습니까?

Static type parameters for the type provider

:

  • ServiceUri : 문자열 중 하나로, OData 서비스의 URI 문자열입니다.
  • LocalSchemaFile : string 스키마가 들어있는 파일의 경로입니다. 이 파일은 형식 공급자가 씁니다.
  • ForceUpdate : bool 서비스에 대한 직접 연결이 디자인/컴파일 타임에 사용 가능하고 로컬 서비스 파일이 새로 고쳐 져야합니다. 기본값은 true입니다. ForceUpdate가 이면 false로, 공급자는 LocalSchemaFile의 변경 내용에 응답합니다.
  • ResolutionFolder : string 컴파일 할 때 상대 파일 경로를 확인하는 데 사용되는 폴더입니다. 기본값은 에 프로젝트 또는 스크립트가 들어있는 폴더입니다.
  • DataServiceCollection : bool DataServiceCollection에서 파생 된 컬렉션을 생성합니다. 기본값은 false입니다.

답변

3

예, 그렇지만 유창하게 매끄럽지는 않지만 컴파일러 검증을받지 못합니다. 이것은 유형 공급자의 장점 중 하나입니다.

서비스에서 $metadata을 가져 와서 로컬에 .csdl 파일로 저장 한 다음 코드에 LocalSchemaFile 정적 매개 변수를 사용해야합니다. 그런 다음 런타임에 인증하기 위해 데이터 컨텍스트 개체에 자격 증명을 설정할 수 있습니다.

// download http://services.odata.org/Northwind/Northwind.svc/$metadata to local file Metadata.csdl 
type Northwind = ODataService<"http://services.odata.org/Northwind/Northwind.svc/", 
           LocalSchemaFile="Metadata.csdl", 
           ForceUpdate=false> 

let db = Northwind.GetDataContext() 
db.Credentials <- System.Net.CredentialCache.DefaultCredentials // or whatever creds you need 

// go party 
+0

나는 C#을 사용하여 연결 한 .cdmx 파일을 사용하여 종료했다. 방금 파일 확장명을 변경하면 잘 작동합니다. 감사! – mydogisbox