asp.net-mvc-3 – 如何从MVC 3和IIS7提供汇编嵌入式资源?
发布时间:2020-12-16 09:50:48 所属栏目:asp.Net 来源:网络整理
导读:我正在开发一个带有“插件”功能的MVC 3应用程序.该 插件是C#dll,嵌入了所有必需的资源(css,图像和脚本). 我使用了“MvcRazorClassGenerator”Visual Studio扩展来创建预编译视图. 我使用以下代码检索嵌入的资源: public FileStreamResult EmbeddedResource
我正在开发一个带有“插件”功能的MVC 3应用程序.该
插件是C#dll,嵌入了所有必需的资源(css,图像和脚本). 我使用了“MvcRazorClassGenerator”Visual Studio扩展来创建预编译视图. 我使用以下代码检索嵌入的资源: public FileStreamResult EmbeddedResource(string pluginName,string resourceName) { Assembly assembly = PluginCache.GetAssembly(pluginName); if (assembly != null) { string tempResourceName = assembly.GetManifestResourceNames() .ToList().FirstOrDefault(f => f.EndsWith(resourceName)); return new FileStreamResult( assembly.GetManifestResourceStream(tempResourceName),GetMIMEType(tempResourceName)); } return null; } 在视图中,我有以下代码来访问资源: @Url.Content("/Common/EmbeddedResource/PluginName/[AssemblyNamespace].Content.Images.blank.gif") 当我在开发环境中时,一切正常,所有资源都被正确加载和显示,但在部署时,噩梦就开始了. IIS 7.5一直在搜索名为“/Common/EmbeddedResource/PluginName/[AssemblyNamespace].Content.Images.blank.gif”的静态文件,而不是嵌入式文件,给出了所有嵌入式资源的404错误. 我已尝试在此站点上安装问题所提及的热修复并更改配置文件,但未加载资源. 我正在尝试部署到Windows 2008 Server R2 SP1 64位. 解决方法
问题可能是使用
Url.Content("/Common/EmbeddedResource/PluginName/[AssemblyNamespace].Content.Images.blank.gif") 我有相同的设置,但因为内容是由我使用的动作提供的 @Url.Action("EmbeddedResource","EmbeddedResources",new { pluginName = "PluginName",resourceName = "MyProject.Scripts.MyScript.js" }) 然后我建立了一条路线 routes.MapRoute( "EmbeddedResources","EmbeddedResources/{pluginName}/{resourceName}",new { controller = "EmbeddedResources",action = "EmbeddedResource",pluginName = "DefaultPluginName",resourceName = UrlParameter.Optional }); 这导致脚本引用如此 <script type='text/javascript' src='/EmbeddedResources/PluginName/MyProject.Scripts.MyScript.js'></script> 如果采用这种方法,您可能还需要缩小嵌入文件(对于发布版本).您可以使用MSBuild任务执行此操作,详见this blog post. <Import Project="$(MSBuildExtensionsPath)MicrosoftMicrosoftAjaxajaxmin.tasks" /> <PropertyGroup> <ResGenDependsOn> MinifyJavaScript; $(ResGenDependsOn) </ResGenDependsOn> </PropertyGroup> <PropertyGroup> <PostBuildEvent> </PostBuildEvent> </PropertyGroup> <Target Name="MinifyJavaScript" Condition=" '$(ConfigurationName)'=='Release' "> <Copy SourceFiles="@(EmbeddedResource)" DestinationFolder="$(IntermediateOutputPath)" Condition="'%(Extension)'=='.js'"> <Output TaskParameter="DestinationFiles" ItemName="EmbeddedJavaScriptResource" /> </Copy> <AjaxMin JSSourceFiles="@(EmbeddedJavaScriptResource)" JsSourceExtensionPattern=".js$" JsTargetExtension=".js" CssSourceFiles="@(CSS)" CssSourceExtensionPattern=".css$" CssTargetExtension=".css" JSLocalRenaming="CrunchAll" /> <ItemGroup> <EmbeddedResource Remove="@(EmbeddedResource)" Condition="'%(Extension)'=='.js'" /> <EmbeddedResource Include="@(EmbeddedJavaScriptResource)" /> <FileWrites Include="@(EmbeddedJavaScriptResource)" /> </ItemGroup> </Target> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 互联网级监控平台之内存存储的设计和优化
- 如何在iis8中启用asp.net
- asp.net-mvc – Asp.net Mvc自定义机制来处理未经授权的请求
- 在ASP.NET中创建搜索功能
- ASP.Net自定义客??户端验证
- asp.net – Windows Azure启动任务未触发
- asp.net – mod_mono asp MVC4错误:System.Security.Secur
- 在为asp经典页面IIS6调试vb 6 dll时,为什么我的ObjectConte
- asp.net-mvc – 为什么ASP.Net MVC便携式区域不像Rails插件
- asp.net-mvc-4 – .net 4.5 ASP.Net web API JSONP支持