WCF PInvoke产生“访问被拒绝”

时间:2012-08-14 22:08:15

标签: c# wcf iis pinvoke

我有一个使用webHttpEndpoint端点实现REST接口的WCF。

调用堆栈是这样的: WCF服务>> C#Library>> PInvoke>> C ++库

从Visual Studio运行时,一切都按预期工作。部署到IIS时,会发生以下错误:

System.DllNotFoundException: Unable to load DLL 'native.dll': Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) at ...

所有.dll文件都在\ bin文件夹中。

完全相同的C#Library / PInvoke链在同一服务器上的Web窗体ASP.NET站点中工作。

以下是WCF服务的web.config:

   

 <system.web>
   <trust level="Full"/>
   <compilation debug="true" targetFramework="4.0" />
   <customErrors mode="Off"/>
 </system.web>

 <system.webServer>
   <modules runAllManagedModulesForAllRequests="true">
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   </modules>
 </system.webServer>

 <system.serviceModel>
   <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
   <standardEndpoints>
     <webHttpEndpoint>
       <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
     </webHttpEndpoint>
   </standardEndpoints>
</system.serviceModel>

WCF环境中是否存在特殊内容,或者是否存在查找/访问本机dll所需的特定权限?

其他信息 从/ bin中删除native.dll会产生:

System.DllNotFoundException: Unable to load DLL 'util32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

所以它实际上找到了文件。

1 个答案:

答案 0 :(得分:-1)

原来这是文件上的简单权限问题的结果。