Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跳过单一方法的所有翁布拉科魔术_C#_Asp.net Mvc_Umbraco - Fatal编程技术网

C# 跳过单一方法的所有翁布拉科魔术

C# 跳过单一方法的所有翁布拉科魔术,c#,asp.net-mvc,umbraco,C#,Asp.net Mvc,Umbraco,我刚刚被指派在使用Umbraco的项目中实现一项功能。我的工作基本上是生成特定的XML并将其返回给用户。但是我无法让它工作,因为当我创建新控制器时(我已经尝试创建 Controller, RenderMvcController and SurfaceController )和其中的方法(若我只是在现有控制器中创建新方法),在浏览器中键入url后,我会得到错误404。示例:我在其中创建TestController和方法索引。我尝试过TestController是从RenderMvcControl

我刚刚被指派在使用Umbraco的项目中实现一项功能。我的工作基本上是生成特定的XML并将其返回给用户。但是我无法让它工作,因为当我创建新控制器时(我已经尝试创建

Controller, RenderMvcController and SurfaceController
)和其中的方法(若我只是在现有控制器中创建新方法),在浏览器中键入url后,我会得到错误404。示例:我在其中创建TestController和方法索引。我尝试过TestController是从RenderMvcController或SurfaceController或仅仅是Controller派生出来的组合。编译后等我运行的时候

http://my_address/Test 

我从翁布拉科得到404错误。我查看了umbraco中已经在项目中的另一个页面,它们也在umbraco web面板中以某种方式进行了配置:

http://my_address/umbraco
我还尝试向现有的控制器添加新方法,但没有成功(同样是404错误)。我从未使用过umbraco,也不知道如何配置它。我只想知道是否有任何方法可以创建方法,该方法可在以下位置访问:

http://my_address/MyMethod

在现有的Umbraco项目中,将返回我将要编程的内容(没有任何视图、部分视图等-我可以手动设置标题和内容类型,我的内容是纯文本),而无需处理Umbraco管理面板

谢谢你的帮助:)

//编辑

我的心被正式吹了。。。我的回答是文化相关的(我的意思是,我从数据库中提取不同的数据取决于国家),但它并没有那么简单

CurrentCulture.CultureInfo
Umbraco配置为根据域扩展返回不同的区域性(德国代表.de,英国代表.co.uk,Dennmark代表.dk-这只是Umbraco管理面板中的手动配置,为不同的主机名分配不同的区域性信息和视图)。常规控制器从中获取此修改的区域性

RenderModel.CurrentCulture
作为参数传递给控制器的方法。是否有一种方法可以创建umbraco控制器/方法/安婷,它不会分配布局/模型(这样我就可以显示从外部服务收到的纯XML数据),并且仍然可以访问umbraco的RenderModel区域性?我试图创建的是,如果用户键入url:

http://my_address.de/myController/myMethod
我的控制器将获取当前区域性,调用外部服务传递区域性作为参数,并显示接收到的数据,而不将其包装到任何视图中。例如:

public class myController : SomeBaseUmbracoControllerOrsomething
{
    public string/XmlDocument/ActionResult myMethod(RenderModel model)
    {
        int countryId = myFunctionToTranslateCultureToCountryId(model.CurrentCulture);
        return MethodThatCallsExternalServiceAndReturnsXml(countryId);
    }
}
很抱歉搞混了,但我刚刚了解到了这些国家的混乱情况…

您不想使用

  • 控制器,因为这不是umbraco路由过程所选择的
  • 您不想使用RenderMvcController,因为这太过分了
  • 您不想使用Surfacecontroller,因为您没有使用子动作或窗体
您需要的是一个UmbracoApiController(),或者您的umbraco版本是6.1之前的版本,然后使用/Base extension()


或者,如果您确实想跳过某条路线的所有umbraco magic,请将路径添加到web.config/AppSettings/umbracoReservedUrls。

如果您创建
SurfaceController
,请键入
http://my_address/umbraco/surface/yourcontroller/youraction
http://my_address.de/myController/myMethod
public class myController : SomeBaseUmbracoControllerOrsomething
{
    public string/XmlDocument/ActionResult myMethod(RenderModel model)
    {
        int countryId = myFunctionToTranslateCultureToCountryId(model.CurrentCulture);
        return MethodThatCallsExternalServiceAndReturnsXml(countryId);
    }
}