C# 部署后未找到嵌入式Razor视图(IIS)
我目前正在做一个项目,它有一个插件式的系统。一旦web项目启动,它将查找插件DLL并构建GUI。DLL包含嵌入式视图和嵌入式资源,如图片或Java脚本C# 部署后未找到嵌入式Razor视图(IIS),c#,asp.net-mvc,iis,embedded-resource,C#,Asp.net Mvc,Iis,Embedded Resource,我目前正在做一个项目,它有一个插件式的系统。一旦web项目启动,它将查找插件DLL并构建GUI。DLL包含嵌入式视图和嵌入式资源,如图片或Java脚本 我使用RazorGenerator(VS插件)从视图生成cs文件,视图的构建操作设置为“嵌入式资源”,自定义工具设置为“RazorGenerator” 我使用自定义虚拟路径提供程序(与此非常类似) 我用我在网上找到的这个变通方法注册了我的虚拟路径提供程序(这是必须的,因为如果我不使用它,它就不能正常工作): 我在我的RouteConfig.c
- 我使用RazorGenerator(VS插件)从视图生成cs文件,视图的构建操作设置为“嵌入式资源”,自定义工具设置为“RazorGenerator”
- 我使用自定义虚拟路径提供程序(与此非常类似)
- 我用我在网上找到的这个变通方法注册了我的虚拟路径提供程序(这是必须的,因为如果我不使用它,它就不能正常工作):
- 我在我的RouteConfig.cs中使用它使嵌入的脚本和图片文件工作:
routes.IgnoreRoute("{*staticfile}", new { staticfile = @".*\.(css|js|gif|png|jpg|exe)(/.*)?" });
- 我在我的web.config中添加了以下行(还有更多行),以告知asp对我的嵌入式源使用我的路径提供程序:
<add name="AspNetStaticFileHandler-PNG" path="*.png" verb="GET,HEAD" type="System.Web.StaticFileHandler"/>
- 如果我给出Razor Generator生成的虚拟路径(例如:“~/Views/ViewTest/Test),它就会工作
- 如果我给出使用我的resourceprovider的Dll资源路径(例如:“DllResources/ViewTest.Dll/Views/ViewTest/Test.cshtml),它就可以工作
The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched:
The file '/Views/ViewTest/DllResources/EmbeddedResourceTest/Views/ViewTest/Test.cshtml' has not been pre-compiled, and cannot be requested.
如果我使用DllResources路径(选项2)对视图进行寻址,IIS将显示以下错误消息:
The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched:
The file '/Views/ViewTest/DllResources/EmbeddedResourceTest/Views/ViewTest/Test.cshtml' has not been pre-compiled, and cannot be requested.
我不知道现在该怎么做才能使它起作用。我试图用其他解决方案取代每一步。结果仍然是一样的。完美地在VS中工作,但部署后视图不会显示
它是IIS的配置吗?缺少什么?我是不是在web.config中遗漏了什么?
请帮我解决这个问题
谢谢,
诺伯特好吧,经过一周的痛苦,我终于想出了解决办法。 问题在于web项目的发布。 以下是我所做的: 我一直在Microsoft.Net文件夹中使用aspnet_编译器发布我的web应用程序。这是由成功的Web项目生成触发的生成后事件。我删除了这个事件,并在web项目的.csproj文件中用“AfterBuild”脚本替换了它。我在电脑上找到了剧本。使用这种新的发布方法,嵌入的视图最终将显示出来 希望这对将来的人有所帮助 问候,