Dll NPOI (dll стороннего разработчика Excel) .... System.Security.SecurityException: эта сборка не допускает частично доверенных вызывающих - PullRequest
2 голосов
/ 10 ноября 2010

Я разработал портал на фреймворке Asp.net mvc. Я размещал этот сайт на хостинге 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>

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

1 Ответ

1 голос
/ 10 ноября 2010

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

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

...