2010-07-23 83 views
3

我有一个新创建的asp.net MVC 2.0应用程序,它与现有的asp.net webforms应用程序完全独立的解决方案。为什么你需要在子asp.net项目中包含父DLL?

因为我不希望用户必须再次登录时,我在同一站点中现有的WebForms应用程序部署的MVC应用程序 - 一切都很正常。

有一件事让我完全困惑,虽然Webforms应用程序使用了与我的MVC应用程序无关的第三方DLL,但是如果不将该DLL包含在MVC \ bin目录中,我不能使用MVC应用程序。为什么这是必需的?这不是该应用程序的一部分?它甚至造成我的问题吧,所以我更加好奇了......

为什么被要求在我的MVC应用程序这个依赖的DLL?

+0

你有一个意外的集引用?也许在web.config? – 2010-07-23 17:17:37

+0

好问题,但不是,完全没有参考该DLL。这两个项目在web.config中共享相同的MachineKey,是否会导致依赖性?虽然没有意义... – 2010-07-23 17:33:20

回答

6

的原因是因为你的父母的应用程序可能是设置在web.config中的模块或处理部分,并在IIS 7+ IIS配置系统采用分布式/分层配置系统配套的web.config文件。

在这种情况下,子应用程序web.config继承父级web.config的所有设置。不幸的是,ASP.NET仅使用/ bin目录,并且必须包含在根目录中,这意味着由于您可能正在将DLL部署到父应用程序的/ bin目录中,所以子应用程序不会知道这件事。

,让你从继承到子应用程序阻止它你可以修改父的使用位置标记,并设置inheritInChildApplications web.config中:http://forums.iis.net/t/994377.aspx

+1

感谢卡洛斯,这真的很有帮助!我注意到3.5中缺少智能感知,但在封装后,它没有继承。 ,这并不会解决问题,因为现在我得到验证错误,当我链接到MVC网站,可能是因为<验证>和部分不继承。 我会继续尝试,但任何想法,为什么我现在正在获取身份验证错误? – 2010-07-24 15:32:53

+1

是的!通过添加来实现它。谢谢你,卡洛斯,你真的帮了我。 – 2010-07-24 15:38:34

+0

关于此事的更多信息在这里:http://www.hanselman.com/blog/ChangingASPNETWebconfigInheritanceWhenMixingVersionsOfChildApplications.aspx – 2014-05-22 18:01:09

相关问题