11

다국어 지원을 위해 고유 한 필터 속성을 만들려고합니다. 아이디어가 간단합니다. URL은 언어를 나타냅니다.은 몇 가지 인터페이스를 구현해야하지만 오류가 발생했지만 이미 완료되었습니다.

  • * HTTP : //host.ext/ /rest_of_the_url *이 영어로 열리고
  • * HTTP : //host.ext/ HY/rest_of_the_url *이 아르메니아어에서 열립니다.

문제는 실행에가 MultilingualActionFilterAttribute 여기

오류 텍스트는 말한다이다 "주어진 필터 인스턴스는 다음과 같은 필터 인터페이스 중 하나 이상을 구현해야합니다. IAuthorizationFilter, IActionFilter, IResultFilter, IExceptionFilter을"

여기서는 글로벌 필터로 사용하고 있습니다.

namespace TIKSN.STOZE.WebApp 
{ 
    public class FilterConfig 
    { 
     public static void RegisterGlobalFilters(System.Web.Mvc.GlobalFilterCollection filters) 
     { 
      filters.Add(new TIKSN.STOZE.Common.MultilingualActionFilterAttribute()); 
      filters.Add(new System.Web.Mvc.HandleErrorAttribute()); 
     } 
    } 
} 

여기에 정의하고 있습니다. 당신이 웹 API를 사용하는 경우 IActionFilter이 모두 System.Web.Http.FiltersSystem.Web.Mvc 네임 스페이스에 정의되어

namespace TIKSN.STOZE.Common 
{ 
    public class MultilingualActionFilterAttribute : System.Web.Mvc.ActionFilterAttribute 
    { 
     public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext) 
     { 
      string language = System.Convert.ToString(filterContext.RouteData.Values["language"]); 

      System.Diagnostics.Debug.Print("Requested language is '{0}'", language); 
      language = Helper.PickUpSupportedLanguage(language); 
      System.Diagnostics.Debug.Print("Supported language is '{0}'", language); 

      if (language == string.Empty) 
      { 
       filterContext.HttpContext.Response.RedirectToRoutePermanent(new { language = Common.Properties.Settings.Default.DefaultLanguageCode }); 
      } 

      language = Helper.TryToPickUpSupportedLanguage(language); 

      System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(language); 
      System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(language); 
     } 
    } 
} 
+0

. 이것은 새로운 MVC4 사이트입니까, 아니면 MVC3에서 업그레이드 된 사이트입니까? dll 버전 문제 일 수 있습니다 - 임시 ASP.NET 파일을 삭제하려고 시도 했습니까? – levelnis

+0

웹 API를 사용하고 있습니까? –

답변

3

문제점은 MVC 5로 업데이트되었으므로 업데이트해야합니다. web.config 파일도 있습니다.

+0

링크가 죽었으므로 어떻게해야하는지 알려주시겠습니까? –

+1

링크가 작동하지 않습니다. 다시 확인하십시오. – TIKSN

24

다음 문제 때문에 잘못된 인터페이스를 구현하는 발생할 수 있습니다.

+1

아니요, '사용 중'이 없습니다. System.Web.Mvc.ActionFilterAttribute 클래스를 구현했습니다.이 클래스는 자체적으로 System.Web.Mvc.IActionFilter 인터페이스를 구현합니다. – TIKSN

+7

Web API 필터는 GlobalConfiguration.Configuration.Filters를 사용하여 등록됩니다. 자세한 내용은 [this] (http://forums.asp.net/t/1835666.aspx)를 확인하십시오. –

+0

@ FlorinDumitrescu의 코멘트가 정답입니다. –

관련 문제