我有一个ASP.NET MVC 4应用程序(使用.NET framework 4.5)和无扩展名的URL.该站点包含一些静态文件,但所有无扩展请求都应该进入MVC路由.
这一切都适用于以下请求:
但是,如果我发出/ fr的请求,我会收到错误:
HTTP Error 403.14 - Forbidden,
The Web server is configured to not list the contents of this directory.
Run Code Online (Sandbox Code Playgroud)
我知道这是因为磁盘上确实存在一个/ fr目录,但我仍然希望将此请求映射到我的MVC应用程序.它不是删除fr目录的选项,因为它包含一些静态文件.
这可能吗?我已经尝试添加runAllManagedModulesForAllRequests="true"到system.webServer中的modules元素(我真的不想这样做,但它无论如何都没有帮助).
编辑 - 如果它有用,这里是路由:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("cid/{*pathInfo}");
routes.MapRoute(
"Page",
"{*PageId}",
new { controller = "Page", action = "Page" }, // Parameter defaults
new { pageId = @"^(.*)?$" } // Parameter constraints
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: …Run Code Online (Sandbox Code Playgroud) 我正在为一个网站整理功能设计,目的是使用Tridion 2012 UI/XM来管理页面.页面上有2个区域,左侧是主要内容区域,右侧是侧栏.理想情况下,用户应该能够将内容拖放到这些区域内和内部.在一个理想的世界里,我想沿着这条线定义区域
查看文档 似乎需要明确使用CT/Schema ID对来定义区域.有没有可能以任何其他方式做到这一点?
至少我希望能够定义侧栏允许一组固定的CT/Schema ID对,但是将主区域作为一个catchall桶.这可能吗?
侧栏也可以分成广告上方和下方的2个区域.两个地区应该允许相同类型的CP - 据我所知这是不可能的 - 这是正确的吗?有没有解决方法的想法?
我正在玩SDL Tridion 2011(GA)的自定义搜索索引处理程序.我使用Arjen提供的非常有用的信息得到了一些工作,但是我不确定我的执行是否是最好的选择.
要求是能够通过URL搜索CMS中的页面(例如www.example.com/news/index.html).为了做到这一点,我使用ISearchIndexingHandler接口创建了一个类(下面的代码).我正在索引项目的ContentText字段中的url,但是我不确定这通常是否包含页面的其他内容(我认为页面只有元数据,所以这应该没问题).在自定义字段上使用它的优点是我只需在搜索框中键入url,而无需使用<url> IN <fieldname>或类似的东西.
所以我的问题是,有没有理由不使用ContentText for Pages,使用自定义字段有什么优势吗?对于如何处理BluePrinting有很好想法的人也会获得奖励标记(如果我在父出版物中创建页面,我希望本地URL也在子出版物中编入索引),以及结构组路径被更改的情况(我想我可以以某种方式从我的索引处理程序中触发子页面项的重新索引).
代码:
using System;
using Tridion.ContentManager.Search;
using Tridion.ContentManager.Search.Indexing.Handling;
using Tridion.ContentManager.Search.Indexing.Service;
using Tridion.ContentManager.Search.Indexing;
using Tridion.ContentManager.Search.Fields;
namespace ExampleSearchIndexHandler
{
public class PageUrlHandler : ISearchIndexingHandler
{
public void Configure(SearchIndexingHandlerSettings settings)
{
}
public void ExtractIndexFields(IdentifiableObjectData subjectData, Item item, CoreServiceProxy serviceProxy)
{
PageData data = subjectData as PageData;
if (data != null)
{
PublishLocationInfo info = data.LocationInfo as PublishLocationInfo;
string url = GetUrlPrefix(data) + info.PublishLocationUrl;
item.ContentText = url;
}
} …Run Code Online (Sandbox Code Playgroud) 我有模板代码(2011 SP1),它通过检查来检测是否正在使用CMS预览engine.RenderMode(这将是PreviewDynamic).这将确保应用服务器通常为已发布页面添加的内容(如CSS,JS,导航元素等)被注入到渲染输出中,因此预览在CMS中看起来很不错.
Tridion 2012 UI/XM创建了用于动态预览的临时文件,事实证明,在发布这些文件时,渲染模式也是如此PreviewDynamic,这给我一个问题,就像实际发布页面的情况一样,我不想要注入东西(在这种情况下,app服务器使用.NET母版页来处理这个问题)
纵观可能的值RenderMode,我们有.NET API中Publish,PreviewStatic和PreviewDynamic.
所以我的问题是:
PreviewStatic?我们有一个动态CT来渲染组件输出,其中有一个带链接文本的组件链接.在预览时,输出似乎是正确的,但是一旦我们发布页面并点击,就不会显示链接(甚至链接文本).
DCT的输出格式和目标语言都已设置为REL,但我们的tcdl:link未解析,并且未呈现动态组件演示.嵌入式演示文稿将通过页面呈现,而无需解析tcdl:link标记.存储文件指向sql db.
你能告诉我还需要做些什么吗?