Nat*_*ate 5 .net c# asp.net-mvc umbraco
我的问题是这个
我错过了哪些配置步骤让Mvc Surface Controllers在Umbraco中工作?
我的理论是,因为默认的Umbraco安装中有一个文件夹,/umbraco/用于连接到CMS,物理路径与路由交互,/umbraco/surface/{Controller}/{Action}从而产生ASP.NET YSOD(当我尝试访问时,还有IIS 404)该路由上未定义的控制器.)
背景资料
我已将此类添加到我App_Code刚刚下载的Umbraco 6.1.6副本中的文件夹中:
public class MembersController : SurfaceController
{
public ActionResult Index()
{
return Content("Hello, Member!");
}
}
Run Code Online (Sandbox Code Playgroud)
当我导航到我认为应该是我的Index()方法的路线时,我得到一个YSOD,表示无法找到资源:

代码未执行,显示上述错误; 但是,如果我将Uri更改为垃圾,我会收到IIS 404错误:

我开始在现有网站上看到这个,认为我的网站搞砸了我在Umbraco 6.1.6的新副本中尝试了它并得到了完全相同的结果.
为了记录,我也尝试了MembersSurfaceController它和它相关的Uri,它具有与上面完全相同的结果.当我点击有效路线时是YSOD,而当我没有时,是IIS 404.
我也在目录中将我umbracoSettings.config改为MVC /config/.
更新
我正在使用开箱即用的web.config文件,其中包含:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="UrlRewriteModule" />
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
.
..
...
Run Code Online (Sandbox Code Playgroud)
在我的默认Umbraco网站上,我没有定义任何重写规则; 但在我的实际网站上,我有几个重写规则.我认为这不会导致它,因为我在两个网站上都看到相同的行为,但......
我试过UrlRewrite完全删除我得到相同的结果.
以下方法在 Umbraco 7.1 中适用于我,我希望它也适用于 6.1:
在 App_Code 文件夹中创建名为“Controllers”的文件夹,并将表面控制器放入其中(以便它们位于“Controllers”命名空间内)。
例如,我在 App_Code\Controllers 文件夹中(因此在“Controllers”命名空间内)有以下控制器:
namespace Controllers
{
public class ServiceCentersController : SurfaceController
{
public ActionResult GetServiceCenters(string country = "", string region = "", string city = "")
{
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的站点在本地主机上运行,因此我可以通过导航到以下位置来调用 GetServiceCenters 操作:
http://localhost/umbraco/Surface/ServiceCenters/GetServiceCenters?country=aa®ion=bb&city=cc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |