问题标签 [virtualpathprovider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc-3 - 使用自定义 VirtualPathProvider 加载嵌入式资源部分视图
我编写了自定义的 VirtualFile 和 VirtualPathProvider 实现,它们成功地获得了部分视图的嵌入式资源。
但是,当我尝试渲染它们时,会产生此错误:
The view at '~/Succeed.Web/Succeed.Web.Controls.SImporter._SImporter.cshtml' must derive from WebViewPage, or WebViewPage<TModel>.
渲染局部视图时,在常规视图内,它如下所示:
是什么让它相信这不是片面的观点?
编辑:我发布了我的虚拟文件和虚拟文件提供程序实现的代码,供任何偶然发现这个寻找解决方案以使该组件正常工作的人使用。这个问题也适用于那些基于问题标题的人。
这是 VirtualFile 实现供参考:
虚拟路径提供者:
当然,不要忘记在 Application_Start() 事件中在项目的 Global.asax 文件中注册这个新的提供程序
asp.net - VirtualPathProvider 在 IIS 7.5 的生产环境中(完全)不起作用
我一直在从事一个具有通用功能的项目,特别是我想共享主文件和相关的图像/js/等。为此,母版页及其相关文件都被包装到一个“全局”DLL 中,供所有“子项目”使用。这一切在开发中都很有效,但是部署产生了一个似乎让很多人措手不及的惊喜:VirtualPathProvider
预编译时不起作用。
现在感谢这篇包含解决方法的博客文章,我能够再次尝试让它工作。遗憾的是,它仍然没有。
我选择摆脱我的Global.asax
实现并采用博客文章的AppInitialize
方法:
由于实际的提供程序在调试中工作,我不会包含它。如果您想看,请不要犹豫。只是想让问题尽可能简短。
整个情况的有趣之处在于,生产不会产生关于无法找到母版页的错误。对我来说,这意味着提供者正在工作,但无论出于何种原因,其余资源(js/css/etc)都没有从程序集中正确检索。
所以我的问题归结为:这个解决方案在开发中很有效,但在 IIS 7.5 上的生产中无效的原因是什么?
2011 年 11 月 20 日更新
尝试了 David Ebbo 的建议,不幸的是没有结果。我的网络配置现在看起来像这样:
2011 年 11 月 21 日更新
只是为了验证我对 VirtualPathProvider 确实在工作的怀疑,我注释掉了第三行 ( mi.Invoke(....
) 并重新部署了站点。正如我所怀疑的,它现在由于无法找到 MasterPage 文件而中断。此问题似乎仅与通过 VPP 传递的静态文件有关。
azure - 使用 VirtualPathProvider 将主题放入 Azure CDN
我正在尝试将 Azure 网站的主题存储在 Azure CDN 中。
我已将文件复制到 CDN 中,并保留了原始 App_Themes 文件夹中的文件夹结构。
我创建了一个 VirtualPathProvider 以及必要的 Virtualdirectory 和 VirtualFile 类。提供者在 global.asax 中注册。
我的问题是似乎来自 CDN 的唯一文件是皮肤文件。所有图像、css 等仍然被引用,就好像它们在标准 App_Themes 结构中一样。如果我在我的代码中设置一个断点,那么我的 VirtualTheme 的 Open 方法只会为皮肤文件调用。
有没有人设法实施这样的解决方案?
任何想法我做错了什么?
在 Global.asax Application_start 中:
caching - 当从 VirtualPathProvider 作为 Stream 返回文件时,维护文件的缓存控制属性
我已经实现了一个 VirtualPathProvider 来从 Azure CDN 返回 Azure 网站的主题文件(图像、css)。除了一件事之外,它运行良好:来自 CDN 的文件都将其缓存控制属性设置为“私有”,因此永远不会被缓存。
实际的 blob 的属性设置正确,如果我通过它的直接 URL(即不通过 VPP)访问一个,那么缓存控制是正确的。
问题似乎出在我必须实现以将文件作为流返回的 VirtualFile 类的 Open() 方法中?
对此进行搜索,我发现大多数人都以另一种方式遇到问题 - 即文件在他们不希望它们存在时被缓存。但是,我能找到的所有示例都没有引用来自另一个 URL 的文件。他们似乎都使用数据库或只是不同的物理路径。
asp.net-mvc - 垂直的 asp.net MVC 组织和 VirtualPathProviders
我目前正在从事一个相对较大的 MVC 项目,我想垂直组织。
就实现而言,该计划是一个VirtualPathProvider。我的问题是,让这个 VirtualPathProvider 了解功能文件夹名称的最佳方法是什么?
例如 ~/Features/{Feature}/View1.cshtml
asp.net-mvc - 缓存从数据库中获取的 MVC 3 视图
我有一个 MVC3 应用程序,它提供存储在数据库中的视图。我创建了一个VirtualPathProvider
and 在我的GetFile
andFileExists
方法中我去数据库并返回正确的东西。到现在为止还挺好。
现在我想缓存从GetFile
. 我知道 MVC 已经做了一些视图缓存,我们可以通过GetCacheDependency
方法对其进行一些控制。但是我们有比这更多的控制权吗?例如,我们可以在那里使用自定义缓存吗?就我而言,我有兴趣在本地文件系统上缓存视图并自己做缓存失效。
一个简单的方法是在我的GetFile
方法中自己做,但如果在 MVC 中有一个自然的扩展点,我宁愿使用它。
谢谢
c# - 有可写的 VirtualPathProvider 这样的东西吗?
我正在考虑使用 VirtualPathProviders 来抽象出对文件系统上文件的访问,以便可以轻松地将其换出以与其他服务(例如 Amazon S3)一起使用。
虽然这对于读取文件非常有效,但我想知道是否有类似的东西也支持写入?还是我必须自己创建类似 WritableVirtualPathProvider 的东西?
非常感谢
马特
asp.net - 使用中等信任度 .NET 2.0 操作目录和图像
这个问题:
有点相同,但答案并没有真正帮助。
在我的网站上,我在名为“Products2”的主目录中保存了一堆产品图像,其中包含基于项目 ID 的图像的各种子目录 0/0/0/1、0/0/0/2 等。
我有很多问题
Security Exception
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
由于权限而尝试使用DirectoryInfo
等。createDirectory
该网站托管在与 Medium Trust 共享的主机上。
我已要求我的托管公司对文件夹设置适当的权限,以便我可以使用这些功能,这些功能从根本上是使我的网站正确显示图像所必需的。伙计们已经这样做了,但由于某种原因,服务器设置不断恢复,然后我到处乱扔错误。
我被指出:
http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx
由我的托管服务提供商提供,但我无法达到我的需要。
有人可以帮我弄这个吗?
例如,尝试获取目录中包含的图像列表并将它们绑定到 ASP:Repeater:
这个函数接收一个目录作为一个字符串,变量directoryPath
是它的关键,并以Server.MapPath
生成的格式返回,所以D://etc...
有人告诉我的是我需要使用相对路径,但是尝试了各种“明显”选项后,我无法获得相同的功能。
在我看来,这只是意味着“/Products2/0/0/1/”等,但这不起作用,我收到错误消息说路径无效。
去做:
并根据上述功能从目录中获取图像并显示。
我将如何使用 来执行此操作VirtualPathProvider
?
asp.net - 仅针对图像覆盖 ASP.NET 波浪号 (~) 分辨率
我有一个大型遗留应用程序,我想将我们所有的图像移动到 CDN。
目前,我们所有的图像都驻留在应用程序根目录下,因此路径都像"~/Images/MyImage.jpg."
由于我们系统的要求,如果要在 CDN 中存在给定图像,我必须在运行时确定给定图像的完整 URL。这使我们可以严格控制版本控制、缓存等。逐个图像地更改代码将是一个非常漫长、乏味且容易出错的过程。
我想做的是能够连接到 ASP.NET 中的某些机制,我可以在其中决定如何解析图像的波浪号。这将允许我们所有现有代码保持原样,并且图像将在运行时定向到 CDN。
我发现了一些关于VirtualPathProviders的提及,这听起来像是我正在寻找的东西,但是当我测试它时,唯一传递给CombineVirtualPaths函数的路径是以 . 结尾的路径.ASPX, .ASCX, and .MASTER
。
谁能帮我找到一个干净、低风险的选择?
基本上,我需要在我的应用程序中将“~/images/myimage.jpg”作为“http://mycdnhost.com/myimage.jpg”呈现给浏览器的任何地方。这将完全避免浏览器向我们的服务器发送图像请求。
asp.net - 使用预编译的 Razor 视图和 VirtualPathProviders 时找不到文件 PrecompiledApp.config
我们有一个应用程序使用 WebForms .aspx 文件来处理几乎所有的事情。Latley 我们一直在使用预编译的 RazorViews 作为获取 nicley 打包功能的一种方式,只需在我们的项目中删除一个新的 dll。但是现在我们发现我们的预编译视图似乎与我们的 VirtualPathProviders 冲突。
当从外部 dll 加载 VirtualPathProviders 时,应用程序会尝试为所有请求加载 PrecompiledApp.config(我们没有得到它)。提供者加载了反射。我们在与注册相同的项目中有一些 VirtualPathProviders,它们工作正常,但是当我们从外部 dll 注册提供程序时,HostingEnvironment.RegisterVirtualPathProvider
我们遇到了这个问题。
如果我们添加文件 PrecompiledApp.config,它会尝试获取 _appstart.cshtml 等等。在通过例外之前,我们必须拥有以下所有这些文件:
- 预编译的App.config
- _appstart.cshtml
- _PageStart.cshtml
- _ViewStart.cshtml
- 视图/_ViewStart.cshtml
- 视图/共享/_ViewStart.cshtml
- 默认.cshtml
我们最终在 default.cshtml 中,应用程序的其余部分工作。因为我们想使用 apsx-files 作为默认值,所以这不是一个可接受的解决方案。我们也担心会出现更多问题,因为我们不知道为什么会发生这种情况。
我们已经尝试过这种方式来加载我们的提供程序,但我们仍然得到同样的错误: http ://sunali.com/2008/01/09/virtualpathprovider-in-precompiled-web-sites/
例外: