【发布时间】:2009-09-12 17:19:57
【问题描述】:
我已经构建了一个使用 DLLImport 访问非托管代码的 Web 服务。该服务在 ASP.NET 服务器中运行良好,但是一旦我从 IIS 运行该应用程序就会产生错误。我已经检查了权限,将 DLL 移动到了 system32 文件夹等......我不知道还能做什么。该服务需要在 IIS 中运行。我该怎么办?
【问题讨论】:
-
你能发布错误吗?是 IIS 错误还是 asp.net 异常?
我已经构建了一个使用 DLLImport 访问非托管代码的 Web 服务。该服务在 ASP.NET 服务器中运行良好,但是一旦我从 IIS 运行该应用程序就会产生错误。我已经检查了权限,将 DLL 移动到了 system32 文件夹等......我不知道还能做什么。该服务需要在 IIS 中运行。我该怎么办?
【问题讨论】:
VS 的 ASP.NET 服务器和 IIS 的主要区别在于 IIS 使用 ASP.NET 作为默认用户,而 VS 的服务器使用你的用户来工作。检查 ASP.NET 用户是否有权在 system32 中执行代码?提供更详细的错误信息,让我们了解问题所在。
【讨论】:
这可能是默认信任级别的问题。尝试在 FullTrust 级别运行您的应用,看看会发生什么:
【讨论】:
如果它是经过身份验证的服务,您可以打开模拟以携带您的凭据。
打开模拟:
http://msdn.microsoft.com/en-us/library/xh507fc5.aspx
在 web.config 中
<system.web>
<identity impersonate="true"/>
</system.web>
【讨论】: