NPOI dll (сторонняя библиотека Excel Writer) System.Security.SecurityException: эта сборка не допускает частично доверенных вызывающих абонентов

Я разработал портал на основе Asp.net mvc framework. Я разместил этот сайт на хостинге godaddy. У меня была большая проблема с интеграцией сторонней dll, т.е. NPOI (Excel Writer dll). Он отображает следующую ошибку.

Исключение безопасности

**Description**: *The application attempted to perform an operation not allowed by the security policy.  To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.*

**Exception Detail*s**:* System.Security.SecurityException: That assembly does not allow partially trusted callers.

   **Source Error:**

    *An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.*

Трассировки стека:

[SecurityException: That assembly does not allow partially trusted callers.]
   ETravel.Web.Modules.Travel.Controllers.Admin.ReportController.TravelTaxList() in ReportController.cs:853
   lambda_method(ExecutionScope , ControllerBase , Object[] ) +39
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +178
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +24
   System.Web.Mvc.<>c__DisplayClassa.<InvokeActionMethodWithFilters>b__7() +52
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +254
   System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9() +19
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +254
   System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9() +19
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +254
   System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9() +19
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +192
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +399
   System.Web.Mvc.Controller.ExecuteCore() +126
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +27
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7
   System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +151
   System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +57
   System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

Чтобы решить эту проблему, я добавил эту строку кода в файл web.config.

<compilation debug="true">
   <assemblies>
.....................    .............
        <add assembly ="NPOI, Version=1.2.1.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1"/>
        <add assembly="NPOI.POIFS, Version=1.2.1.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1"/>
        <add assembly ="NPOI.HPSF, Version=1.2.1.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1"/>
        <add assembly ="NPOI.Util, Version=1.2.1.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1"/>
   </assemblies>
  </compilation>

И [сборка: AllowPartiallyTrustedCallers()] в Assemblyinfo.cs. Но изнашивание не работает. В чем основная проблема и какое решение? Пожалуйста, помогите мне...


person MikMark    schedule 10.11.2010    source источник
comment
Пожалуйста, опубликуйте код ReportController.TravelTaxList().   -  person Levi    schedule 18.11.2010


Ответы (1)


Нет, это NPOI, который должен разрешать вызывающие абоненты с частичным доверием. Вероятно, он делает что-то под прикрытием, что не будет работать в среде со средним уровнем доверия.

Глядя на веб-сайт NPOI, похоже, что это был обновлен для работы в средах со средним уровнем доверия в конце прошлого года, но это было после выпуска 1.2.1. Вы должны попробовать последнюю версию, бета-версию 1.2.3, чтобы увидеть, появилось ли это обновление и исправит ли оно его для вас.

person Rup    schedule 10.11.2010
comment
извини, друг... это не сработало... может быть, у меня проблема с моим сервером хостинга... может быть, мой сервер установил разрешение уровня безопасности .net на средний уровень доверия. - person MikMark; 14.11.2010
comment
Можно ли установить уровень разрешений на полный уровень доверия с помощью кодирования.... какое решение для этого???? - person MikMark; 14.11.2010