WCF 웹 API 미리보기 6을 사용하여 웹 API를 작성 중이지만 현재 약간의 문제가 있습니다. 어떤 사용자가 요청을 수행했는지 확인하기 위해 작업에 IPrincipal을 주입하는 작업 처리기를 갖고 싶습니다. 이미 해당 작업 처리기가 있고 이미 구성되어 있습니다.작업 처리기 WCF 웹 API가 제대로 작동하지 않습니까?
HttpOperationHandlerFactory이어야 입력 매개 변수를 확인할 수 없습니다 :하지만 내가 WebInvoke의 속성과 함께 작업을 장식하고 동시에 작업이 IPrincipal과 다른 도메인 오브젝트를 수신 할 때, 시스템이 말해 예외를 throw하는 것으로 나타났습니다 서비스 조작 'NameOfTheOperation'에 대한 요청 메시지 컨텐츠와 연관된다. 작업에서 요청 메시지의 내용을 예상하지 않으면 HTTP GET 메서드를 작업과 함께 사용하십시오. 그렇지 않으면, 그 하나 개의 입력 매개 변수를 확인 중 하나가 바로 그거야로 설정 IsContentParameter 재산 '참'또는 다음 중 하나에 할당 할 유형입니다 : HttpContent, ObjectContent 1, HttpRequestMessage or HttpRequestMessage
1.
내가 여기서 무슨 일이 일어나고 있는지 몰라. 몇 가지 배경을 제공하기 위해 내가 코드를 게시하여 내가 어떻게해야하는지 알려줍니다.
동작 : 나는 사용자 정의 인증 속성과 함께 작업을 장식 때문에 IPrincipal를 주입 할 때
[WebInvoke(UriTemplate = "", Method = "POST")]
[Authorization(Roles = "")]
public HttpResponseMessage<dto.Diagnostic> RegisterDiagnostic(dto.Diagnostic diagnostic, IPrincipal principal)
{
......
}
WCF 웹 API는 알고있다.
글로벌 파일의 구성은 : 그것이 사용자 정의 인증 attibute로 장식되어있어 경우
var config = new WebApiConfiguration() {EnableTestClient = true};
config.RegisterOAuthHanlder(); //this is an extension method
routes.SetDefaultHttpConfiguration(config);
routes.MapServiceRoute<MeasurementResource>("Measurement");
routes.MapServiceRoute<DiagnosticResource>("Diagnostic");
그런 다음 RegisterOAuthHandler 방법은 작업에 작업 핸들러를 추가합니다.
이
public static WebApiConfiguration RegisterOAuthHanlder(this WebApiConfiguration conf)
{
conf.AddRequestHandlers((coll, ep, desc) =>
{
var authorizeAttribute = desc.Attributes.OfType<AuthorizationAttribute>().FirstOrDefault();
if (authorizeAttribute != null)
{
coll.Add(new OAuthOperationHandler(authorizeAttribute));
}
});
return conf;
}
public static WebApiConfiguration AddRequestHandlers(
this WebApiConfiguration conf,
Action<Collection<HttpOperationHandler>, ServiceEndpoint, HttpOperationDescription> requestHandlerDelegate)
{
var old = conf.RequestHandlers;
conf.RequestHandlers = old == null ? requestHandlerDelegate : (coll, ep, desc) =>
{
old(coll, ep, desc);
};
return conf;
}
누군가가 이것 좀 도와 줄래이는 모습입니다? 미리 감사드립니다!
위대한 !! 그것은 일했다! – Daniel
잘 알고 있습니다! 통합 MVC 스택에서 이러한 문제가 발생하지 않을 것입니다. –