我正在使用Express的Node应用程序。在这个应用程序中,我有以下内容:
app.use('/', function(req, res) {
res.render('index', {});
});
这条路线适用于积极的情况。但是,它对于否定的情况是失败的。例如,如果我访问" http://www.example.com/404",我仍然会看到索引页面。实际上,我希望它能够通过,以便Express Error处理程序解决错误。
如何更改路线,以便当某人访问我的应用的根目录时,他们会看到主页。但是,如果他们输入其他内容,他们会看到404页面吗?
答案 0 :(得分:1)
您想使用app.get()
(或可能 app.all()
),而不是app.use()
:
app.get('/', function(req, res) {
res.render('index', {});
});
解释app.use('/', ...)
与/404
匹配的原因here:
路由将立即匹配其路径后面的任何路径“/”。例如:
app.use('/apple', ...)
将匹配“/ apple”,“/ apple / images”,“/ apple / images / news”等。
答案 1 :(得分:0)
您可以定义中间件以专门处理错误。
Express错误处理中间件需要四个参数,应该在所有其他路由之后定义:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Cockpit_RVI
{
public partial class rx_check : System.Web.UI.Page
{
String rz_id;
String datenmonat;
protected void Page_Load(object sender, EventArgs e)
{
rz_id = Request.QueryString["rzid"];
datenmonat = Request.QueryString["datum"];
if (rz_id != null && datenmonat != null)
{
update_sql();
} else {
popup("Bitte benutzen Sie das RVI Cockpit, um auf diese Seite zu gelangen.");
}
}
protected void popup(String text)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "Scripts", "<script>alert('" + text.Replace("\n", " ") + "');</script>");
}
protected void update_sql()
{
update_facharztgruppen();
update_liefergebiete();
update_verschreibungsgebiete();
lbl_rechenzentrum.Text = "ARZ " + rz_id;
lbl_datenmonat.Text = datenmonat;
}
protected void update_verschreibungsgebiete()
{
ds_verschreibungsgebiete.SelectCommand = String.Format(@"working sql, tested in sqldeveloper");
ds_verschreibungsgebiete.SelectParameters.Clear();
ds_verschreibungsgebiete.SelectParameters.Add("datenmonat", datenmonat);
ds_verschreibungsgebiete.SelectParameters.Add("rz_id", rz_id);
gv_verschreibungsgebiete.DataSource = ds_verschreibungsgebiete;
gv_verschreibungsgebiete.DataBind();
}
protected void update_liefergebiete()
{
ds_liefergebiete.SelectCommand = String.Format(@"working sql, tested in sqldeveloper");
ds_liefergebiete.SelectParameters.Clear();
ds_liefergebiete.SelectParameters.Add("datenmonat", datenmonat);
ds_liefergebiete.SelectParameters.Add("rz_id", rz_id);
gv_liefergebiete.DataSource = ds_liefergebiete;
gv_liefergebiete.DataBind();
}
protected void update_facharztgruppen()
{
String jahr = datenmonat.Substring(0, 4);
ds_facharztgruppen.SelectCommand = String.Format(@"working sql, tested in sqldeveloper");
ds_facharztgruppen.SelectParameters.Clear();
ds_facharztgruppen.SelectParameters.Add("datenmonat", datenmonat);
ds_facharztgruppen.SelectParameters.Add("rz_id", rz_id);
gv_facharztgruppen.DataSource = ds_facharztgruppen;
gv_facharztgruppen.DataBind();
}
}
}