我有一个复合网站,网址结构如下:
site.com/products / 1234 /产品名称
粗体部分是页面位置。 1234 是产品ID,然后产品名称只是一个slug。
我注册了PathInfo,并且我使用1234
来读取SQL数据库并返回要在网站上显示的信息。我在名为productDetails
的内联C#函数中执行此操作,该函数将XElement
返回给XSLT函数。
有时,我们会停止使用我们的数据库中的产品或ID。在这些情况下,我想做的是做以下其中一项
然后我想通过电子邮件发送通知(或至少记录错误)。
目前,如果产品不存在,我只返回一个空的<product>
元素。
我在InlineMethodFunction
&gt;内尝试了以下代码'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
//
}
}
答案 0 :(得分:0)
事实证明,我只能在外部功能中实现这一点。感谢PauliØ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。