问题标签 [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.

0 投票
1 回答
955 浏览

asp.net - ASP.Net,如何忽略 MasterPage 不存在错误?

我正在开发基于 ASP.Net MVC2 的 CMS 项目,我已经为我的母版页实现了VirtualPathProviderVirtualFile,以便在 db 中使用母版页。

它的工作原理如下:我在 aspx/ascx 文件中指明 MasterPageFile。

然后重写VirtualPathProvider.GetFile以从 db 加载母版页,“/Content.master”是在 db 中搜索的关键。

一切对我来说都很好,除了

如果我在 VS2010 的上下文菜单中单击“构建网站”,我将收到错误消息“文件 '/Content.master' 不存在。”

我的母版页存储在db中,这个错误是正常的,有没有办法VS2010可以忽略这个错误?

我正在研究 BuildManager 相关代码,似乎很复杂。

感谢您的任何帮助

0 投票
1 回答
223 浏览

asp.net - 如何能够选择由 VirtualPathProvider 提供的母版页

我们有很多共享相同设计的 Intranet 网站。因此,我们将母版页、样式表、图像和 javascript 放在一个共享程序集中。

使用以下内容加载内容:

问题是 Visual Studio 找不到图像或母版页,因此给了我们很多警告 + 在创建新视图页面时我们无法选择母版页。

可以以任何方式解决吗?

注意:运行网站时一切正常。

0 投票
1 回答
301 浏览

asp.net-mvc - 使用 IIS 路由的静态文件与使用 Cassini 的路由相同

我为 ASP.NET MVC 2 编写了一个自定义 VirtualPathProvider,它在程序集中搜索视图和静态内容,以便我可以在多个站点中重用内容。使用 Cassini 时它工作得很好,但是当我将站点部署到运行 IIS 7 的服务器时,静态文件只是返回 404,甚至没有通过 AssemblyPathProvider(我编写的类)路由。有谁知道如何强制 IIS 在这方面与 Cassini 一样工作?

0 投票
2 回答
929 浏览

asp.net-mvc-3 - MVC 3 加载项视图尝试从加载项解析 _ViewStart.cshtml

我一直在 Internet 上搜索并学习如何使 ASP.Net MVC 3 站点能够使用 MEF。我们的想法是构建一个模块化站点,因此我们可以根据需要扩展功能。我几乎每段代码都在工作,但由于某种原因,当我尝试从加载项加载我的索引视图时,它试图从加载项加载 _ViewStart.cshtml 文件,而不是主MVC 网站。

有没有人遇到过这个问题,如果是这样,解决方法是什么?

0 投票
0 回答
546 浏览

asp.net-mvc - 自定义 ControllerFactory 和 DBProvider 的 asp.mvc 404 错误

我目前正在开发的应用程序是一个 MVC3 应用程序,它结合了标准视图实例化以及如果物理视图不存在则从数据库中检索视图。在实现自定义控制器工厂和 virtualpathprovider 时,我遇到了 404 错误的问题,我不太确定我可能做错了什么。

我们想要的行为如下:

1)如果请求存在“物理”视图,则直接从文件系统提供它(遵循标准 mvc 行为)。在这种情况下,磁盘上会有标准的控制器/视图。2)如果控制器/视图不存在,则检查必要的信息是否存储在数据库中并从数据库中提供。将调用一个名为 GenericController 的控制器,然后从数据库中获取视图数据。

我创建了一个自定义控制器工厂:

以及自定义虚拟路径提供程序:

如果请求的页面在文件系统中不存在,则应用程序流程似乎可以正常工作:1) 首先调用 virtualpathprovider 中的 FileExists 返回 false,以便 IIS 不会尝试用作静态文件。2) 调用控制器工厂中的 GetControllerType 方法并适当地返回我的通用控制器类型。3) 再次调用 FileExists 方法,这次返回 true。4) 调用所有控制器工厂方法,包括 ControllerRelease 方法。

然而,GenericController 实际上从未被调用过。并且 IIS 返回 404 异常。

在 MVC 控制器实例化管道中是否有其他地方需要捕获 MVC 请求?有没有更好的方法让我完成我想要完成的事情?

谢谢。

0 投票
4 回答
11502 浏览

asp.net-mvc - 类库中的 MEF 和 Razor 视图

我有一个使用 MEF 的复合 ASP .NET MVC 3 Razor 应用程序。如果我要将插件作为 DLL 文件和视图 (CSHTML) 部署Views在应用程序的常规文件夹下,一切都会很好。但这不是很干净,如果我不将视图作为嵌入式资源放置在 DLL 文件中(以及控制器和模型),它就不是一个真正的插件。

我关注了很多文章(其中大部分已经过时)。事实上,Stack Overflow 上有一篇相当不错的文章:Controllers and Views inside a Class Library

我还检查了文档,VirtualPathProvider并且我已经能够构建一个自定义的文件,它可以在程序集中找到文件并完美地加载它(或者至少将流传输到它)。为此,我遵循了VirtualPathProvider MSDN 上的文档

VirtualFile 也有一个实现,但 VirtualDirectory 还没有。

这是问题所在。我正在使用 Razor 视图。我知道他们需要web.configRazor 文件中的配置规范来构建它们。但是如果我将它们嵌入到 DLL 中,这个配置就会丢失。

我想知道这是否是我不断收到错误的原因:

'~/Plugins/CRM.Web.Views.CRM.Index.cshtml' 处的视图必须派生自 WebViewPage 或 WebViewPage。

也许我只需要添加一些代码即可使其工作?有任何想法吗?

0 投票
1 回答
1150 浏览

asp.net - 使用虚拟路径提供程序时的嵌入式资源

我已经成功创建了自己的虚拟路径提供程序来加载嵌入在程序集中的用户控件。我面临的问题是我不能在 MyUserControl.ascx 中使用任何嵌入的字符串资源:

这将导致 IIS 在运行时抛出编译异常,说明资源 SR.Welcome 未找到。我猜 ASP.NET 运行时在主程序集中寻找字符串资源 SR,而不是在包含我的用户控件的那个。

有没有人有这个问题并且知道如何使它工作?

0 投票
1 回答
1725 浏览

asp.net-mvc - 配置 IIS 7 以通过虚拟路径提供程序处理静态文件

我有一个从我的虚拟文件系统提供静态文件的虚拟路径提供程序,是否可以通过我的虚拟路径提供程序将 IIS 配置为服务器静态文件,或者我是否需要创建自定义静态文件处理程序?

0 投票
1 回答
1549 浏览

asp.net-mvc - ASP.NET MVC 在重写的 VirtualPathProvider 中禁用视图缓存

我正在使用便携式区域做一些开发工作,所以我有一个被覆盖的VirtualPathProvider.

public override bool FileExists(string virtualPath)似乎每隔几分钟就会被调用一次,这意味着 MVC 正在缓存视图。

这在生产中可能很棒,但我不知道如何在开发中将其关闭。我希望在VirtualPathProvider每次使用视图时都调用它。

有什么建议么?

0 投票
1 回答
558 浏览

asp.net - ASP.Net VirtualPathProvider 和 Visual Studio Intellisense

我希望有人能帮我解决这个烦恼。

在工作中,我们有两个独立的网站项目,它们共享一个共同的 MasterPage。MasterPage 嵌入在两个项目都引用的类库中。我们使用一个自定义的 VirtualPathProvider,它允许我们在每个项目中引用 MasterPage。这在运行时/编译时工作正常,但它破坏了 aspx 页面标记内的智能感知。

当我将 MasterPageFile 属性设置为“~/EmbeddedMasterPage.Master”时,Visual Studio 会在其下方显示一个红色波浪线错误,显示“找不到路径”,并显示一个目录表明它正在尝试在网站项目中查找该文件(而不是类库项目)。由于 Visual Studio 无法确定 MasterPage 在哪里,它会导致所有智能感知中断。它不会显示任何标签。事实上,它能给我的唯一智能是基本的 html 标签。通过谷歌搜索,我能找到的唯一信息是 VS 在嵌入式 MasterPage 中找不到根 html/head/body 标记。不过,我找不到修复它的方法。

这发生在 Visual Studio 2008 和 2010 中。

更新(2011 年 4 月 10 日)

目前,我必须将嵌入的母版页复制到实际的站点项目中才能使其正常工作。我将文件设置为不编译/复制,它工作正常。