我刚刚被分配在使用Umbraco的项目中实现一个功能。我的工作是基本生成特定的XML并将其返回给用户。但是,我无法让它工作,因为当我创建新的控制器(我已经尝试创建
Controller, RenderMvcController and SurfaceController
)及其中的方法(如果我只是在现有控制器中创建新方法),我在浏览器中输入url后得到错误404。示例:我在其中创建 TestController 和方法索引。我已经尝试过TestController派生自RenderMvcController或SurfaceController或者只是Controller的组合。编译后等,当我运行
http://my_address/Test
或
http://my_address/Test/Index
我从umbraco得到404错误。我查看了umbraco中已经在项目中的其他页面,并且它们都在umbraco Web面板中以某种方式配置:
http://my_address/umbraco
我也尝试为存在控制器添加新方法,但没有运气(再次404错误)。我从未与umbraco合作,我不知道如何配置它。我只想知道是否有任何方法可以创建可在以下位置访问的方法:
http://my_address/MyMethod
或
http://my_address/MyController/MyMethod
并且会在现有的Umbraco项目中完全返回我将编程的内容(没有任何视图,部分视图等 - 我可以手动设置Headers和ContentType,我的内容是纯文本),而无需处理umbraco管理员小组?
感谢您的帮助:)
//修改
我的思绪正式被吹......我的回答是文化依赖的(我的意思是我根据国家/地区从数据库中提取不同的数据),但它并不像
那么简单CurrentCulture.CultureInfo
Umbraco被配置为基于域扩展返回不同的文化(德国为.de,英国为.co.uk,Dennmark为.dk - 它只是umbraco管理面板中的手动配置,分配不同的文化信息和视图不同的主机名)。常规控制器从
获取此修改后的文化RenderModel.CurrentCulture
作为参数传递给控制器的方法。有没有办法创建umbraco控制器/方法/ anthing,不会分配布局/模型(因此我可以显示从外部服务收到的纯XML数据),并且仍然可以访问umbraco的RenderModel的文化?我想要创建的是用户输入url:
http://my_address.de/myController/myMethod
我的控制器将获得当前的文化,调用外部服务传递culture作为参数并显示接收的数据而不将其包装在任何视图中。例如:
public class myController : SomeBaseUmbracoControllerOrsomething
{
public string/XmlDocument/ActionResult myMethod(RenderModel model)
{
int countryId = myFunctionToTranslateCultureToCountryId(model.CurrentCulture);
return MethodThatCallsExternalServiceAndReturnsXml(countryId);
}
}
很抱歉有些困惑,但我刚刚与各国了解到这一切......
答案 0 :(得分:2)
您不想使用
您需要的是 UmbracoApiController (http://our.umbraco.org/documentation/Reference/WebApi/)或您的umbraco版本是PRE 6.1然后使用 / Base extention (http://our.umbraco.org/documentation/Reference/Api/Base/Index)
或者,如果您真的想要跳过特定路线的所有umbraco魔法,请添加到web.config / AppSettings / umbracoReservedUrls的路径。