c# - WebApplication 在 IIS Express 上运行良好,但在本地 IIS 上运行不正常

标签 c# asp.net-mvc iis dll iis-express

我的 Web 应用程序有问题。我使用 VS 2013(以管理员身份运行)和 Windows 8 进行开发。

当我使用 IIS Express 进行调试时 - 一切正常,没有任何错误(我以管理员身份运行 VS)。当我更改项目属性以使用本地 IIS(已安装)时 - 我无法使用放置在 GAC (Microsoft.FlightSimulator.SimConnect) 中的外部库。我也以管理员身份运行 VS。 抛出的错误:“HRESULT E_FAIL 已从对 COM 组件的调用中返回”——这对我来说毫无意义。这是在创建新的 SimConnect 对象时抛出的:
var simconnect = new SimConnect(...)
OFC,要使用 SimConnect,首先应该启动 Microsoft Flight Simulator(并且已经启动)。这是我在 Internet 上发现的问题的建议原因 - 第二个是授予权限(如下所述)。

详细信息: 我在解决方案中有两个项目:库项目(用于连接到 FSX)和 Web 项目(MVC - 展示结果)。
1) 我试图将整个库项目内容移动到 MVC 项目中——没有。
2) 我使用 IIS 管理器发布我的网站(使用单独的 AppPool)- 结果与本地 IIS 相同。
3) 我为自己的 AppPool 以及 IUSR、IIS_IUSR 和 DefaultAppPool 授予了文件夹(放置项目的位置)的权限 - 完全访问权限。没事了。
4) 我以管理员身份运行 FSX - 什么也没有:/

我找到了解决方法:我将库项目移动到另一个项目 - 控制台应用程序,我在其中使用 HttpSelfHostConfiguration 来托管它。后来,我从主项目 (MVC) 调用这个 api。对于此解决方案,一切正常(我测试了本地 IIS [调试] 和 IIS 管理器)。我只需以管理员身份运行 Host Api 项目。

我很好奇异常的原因是什么。另外:如何解决:)

这似乎是权限问题 - 但我授予了每个使用的 AppPool。
可能是 GAC 中缺少 dll 权限的原因吗?我不这么认为,但我不知道该怎么做。如果是,如何在 GAC 中授予 dll 权限(或如何复制)?

最佳答案

@Krzyrok,最近在我使用外部库的项目之一中遇到了同样的问题。在跟随无尽的面包屑之后,我解决了它。将您的应用程序池标识从“ApplicationPoolIdentity”更改为“LocalSystem”。我还将站点匿名身份验证从指定的 IUSR 更改为“应用程序池身份”,但对其进行了测试,它可以留在 IUSR 上。我还授予了 IUSR 和 IIS_IUSR 文件夹的权限。

关于c# - WebApplication 在 IIS Express 上运行良好,但在本地 IIS 上运行不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31093152/

相关文章:

c# - 我如何在运行时在 asp.net 中添加新面板

c# - 为大字符串定义正则表达式

c# - SSIS 脚本任务抛出错误

asp.net - 我可以使用 Mono 和 mod_mono 托管 ASP.NET MVC 网站吗?

asp.net-mvc - Orchard 分类法形状按显示类型交替

c# - 网站 gridview 无法在 azure 上的 iis 上工作

PHP Manager IIS 无法安装 Windows 10

c# - 从球员位置列表中找到最大可能的总分

javascript - 使用服务器绑定(bind)时,如何从 Kendo 网格选定行获取数据?

javascript - IIS Rewrite 在刷新时丢失 Angular 应用程序中的路径