我有一个使用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)
所以它实际上找到了文件。
答案 0 :(得分:-1)
原来这是文件上的简单权限问题的结果。