And*_*her 6 iis asp.net-mvc iis-7 asp.net-mvc-2 nancy
在IIS 7中,我使用Nancy项目创建了一个网站.然后,我使用别名向站点添加了MVC 2应用程序api.我能够完美地访问南希项目中已定义的路线.但是,当我访问时/api,我收到以下错误:
Could not load type 'Nancy.Hosting.Aspnet.NancyHttpRequestHandler'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: Could not load type 'Nancy.Hosting.Aspnet.NancyHttpRequestHandler'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[HttpException (0x80004005): Could not load type 'Nancy.Hosting.Aspnet.NancyHttpRequestHandler'.]
System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +11588073
System.Web.Configuration.HandlerFactoryCache.GetTypeWithAssert(String type) +47
System.Web.Configuration.HandlerFactoryCache.GetHandlerType(String type) +18
System.Web.Configuration.HandlerFactoryCache..ctor(String type) +27
System.Web.HttpApplication.GetFactory(String type) +95
System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +352
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375
Run Code Online (Sandbox Code Playgroud)
似乎MVC 2应用程序正在尝试使用NancyHttpRequestHandler来处理请求.我这样说是因为Nancy应用程序中未定义的路由显示404页面.
我尝试了几件事:
对于Web.configMVC 2应用程序,我在<system.web/>块中添加了以下内容:
<httpHandlers>
<add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpHandlers>
Run Code Online (Sandbox Code Playgroud)对于Web.configNancy应用程序,我在<system.web/>块中添加了以下内容:
<httpHandlers>
<add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*" />
<remove verb="*" path="api/*" />
</httpHandlers>
Run Code Online (Sandbox Code Playgroud)我也尝试过使用两个应用程序中的<system.webServer/>和<system.serviceModel/>块中的设置.
当它嵌入IIS 7中的Nancy站点时,如何使MVC 2应用程序正常运行?任何指导将不胜感激.
您的想法是正确的——您需要阻止 NancyFx 特定配置部分继承到子 MVC 站点。
在您的根 (NancyFx) 站点中,<location/>使用正常配置创建一个标签。您的 NancyFx web.config 结构如下所示。(我添加了注释,以便在您决定将 MVC2 站点升级到 MVC3 时避免遇到麻烦。)
<configuration>
<configSections/>
<!-- FYI... configSections cannot be moved into the location tag. If you plan
to upgrade to MVC3 and use the Razor view engine, those configSection
declarations need to live here. If you upgrade to MVC3 and use the Razor
view engine, you will need to remove the Razor configSections from the
views/web.config files any child MVC3 project. -->
<system.web /> <!-- site-wide system.web settings -->
<system.webServer /> <!-- site-wide system.webServer settings -->
<!-- Put the NancyFx specific configuration here -->
<location path="." inheritInChildApplications="false">
<!-- The inheritInChildApplications attribute is the magic sauce! :) -->
<connectionStrings />
<!-- If the connectionStrings are shared by the child site,
you could move them out to the main configuration. But they
cannot exist in both sections of this file. -->
<appSettings />
<system.web>
<httpHandlers>
<add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*" />
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add name="Nancy" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*" />
</handlers>
</system.webServer>
</location>
</configuration>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |