我刚刚被分配在使用 Umbraco 的项目中实现一项功能。我的工作基本上是生成特定的 XML 并将其返回给用户。但是我无法让它工作,因为当我创建新 Controller 时(我尝试创建
Controller, RenderMvcController and SurfaceController
)和其中的方法(如果我只是在现有 Controller 中创建新方法),我在浏览器中输入 url 后收到错误 404。示例:我在其中创建 TestController 和方法 Index 。我尝试过组合,其中 TestController 派生自 RenderMvcController 或 SurfaceController 或只是 Controller。编译后等当我运行时
http://my_address/Test
或
http://my_address/Test/Index
我从 umbraco 收到 404 错误。我查看了 umbraco 中已经存在于项目中的其他页面,它们也都在 umbraco Web 面板中以某种方式进行了配置:
http://my_address/umbraco
我也尝试向现有 Controller 添加新方法,但没有成功(再次出现 404 错误)。我从未使用过 umbraco,也不知道如何配置它。我只是想知道是否有任何方法可以创建可在以下位置访问的方法:
http://my_address/MyMethod
或
http://my_address/MyController/MyMethod
并且将准确地返回我将在现有的 Umbraco 项目中对其进行编程的内容(没有任何 View 、部分 View 等 - 我可以手动设置标题和内容类型,并且我的内容是纯文本),而无需处理 umbraco管理面板?
感谢您的帮助:)
//编辑
我的想法正式被打破了......我的 react 取决于文化(我的意思是我根据国家/地区从数据库中提取不同的数据),但它并不像
那么简单CurrentCulture.CultureInfo
Umbraco 配置为根据域名扩展返回不同的文化(德国为 .de、英国为 .co.uk、丹麦为 .dk - 这只是 umbraco 管理面板中的手动配置,将不同的文化信息和 View 分配给不同的主机名)。常规 Controller 从以下位置获取这种修改后的文化
RenderModel.CurrentCulture
作为参数传递给 Controller 的方法。有没有一种方法可以创建不分配布局/模型的 umbraco Controller /方法/事物(这样我就可以显示从外部服务接收的纯 XML 数据)并且仍然可以访问 umbraco 的 RenderModel 文化?我想要创建的是如果用户输入 url:
http://my_address.de/myController/myMethod
我的 Controller 将获取当前区域性,调用将区域性作为参数传递的外部服务,并显示接收到的数据,而不将其包装在任何 View 中。示例:
public class myController : SomeBaseUmbracoControllerOrsomething
{
public string/XmlDocument/ActionResult myMethod(RenderModel model)
{
int countryId = myFunctionToTranslateCultureToCountryId(model.CurrentCulture);
return MethodThatCallsExternalServiceAndReturnsXml(countryId);
}
}
很抱歉造成困惑,但我刚刚才了解了国家/地区的整个困惑情况......
最佳答案
您不想使用
- Controller ,因为 umbraco 路由进程没有拾取它
- 你不想使用RenderMvcController,因为这太过分了
- 您不想使用 Surfacecontroller,因为您没有使用子操作或表单。
您需要的是 UmbracoApiController ( http://our.umbraco.org/documentation/Reference/WebApi/ ) 或者您的 umbraco 版本是 PRE 6.1,然后使用 /Base 扩展 ( http://our.umbraco.org/documentation/Reference/Api/Base/Index )
或者,如果您确实想跳过某个路由的所有 umbraco 魔法,请将路径添加到 web.config/AppSettings/umbracoReservedUrls。
关于c# - 跳过单一方法的所有 Umbraco 魔法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21309869/