复合C1 -如何在InlineMethodFunction中重定向到404



我有一个复合网站,URL结构是这样的:

site.com/products /1234/产品名称

粗体部分为页面位置。1234是产品ID,而 Product -name只是一个字符。

我注册PathInfo,我使用1234读取SQL数据库并返回信息以显示在网站上。我在一个名为productDetails的内联c#函数中这样做,该函数将XElement返回给XSLT函数。

有时,我们将停止生产产品或ID在我们的数据库中不存在。在这些情况下,我想做的是执行以下命令之一

    返回404
  • 用URL重定向到我的404

然后我想通过电子邮件发出通知(或至少记录错误)。

目前,如果产品不存在,我只返回一个空的<product>元素。

我在InlineMethodFunction> 'productDetails方法中尝试了以下代码,但响应对象似乎不可用。理想情况下,我想将响应类型设置为404而不是重定向。什么好主意吗?:

public static class InlineMethodFunction
{
  public static XElement productDetails( int BulkProductId ) {
    ProductContext db = new ProductContext();
        var products = db.ProductDetailsByBulkID(BulkProductId).ToList();
        if (products.Count < 1)
        {
            // THIS doesn't work
            Response.Redirect("~/404?ProductCode=" + BulkProductId.ToString());
            HttpContext.Current.Response.Redirect("~/404?ProductCode=" + BulkProductId.ToString());
            // ERROR RETURNED The name 'HttpContext' does not exist in the current context
        }
    //
    // rest of code
    //
  }
}

事实证明,我只能在一个外部函数中完成这一点。向保利致敬Østerø!

对于那些感兴趣的…下面是实际使用的代码:

if(products.Count < 1){
    HttpResponse response = HttpContext.Current.Response;
    response.StatusCode = 404;
    response.Status = "404 Not Found";
    // 
    // Send mail to let someone know
    //
}

没有重定向,我只是设置了404消息,URL保持不变,但有一个404。

最新更新