我正在构建一个MVC4 Web应用程序,并希望在我的Web应用程序的起点设置我想要使用的特定URL。
所以我改变了RouteConfig.cs中的一些值,如下所示。
routes.MapRoute(
name: "Default",
url: "{action}.mon/{id}",
defaults: new { controller = "login", action = "index", id = UrlParameter.Optional }
);
你可以通知这个,但是我在动作名后添加了一个后缀,这样我就可以调用一个控制器,显示像“index.mon”这样的URL
如果我手动将“index.mon”放在URL栏中的主机地址之后,那么它的工作正常。 但是当应用程序自动启动时,会抛出403.14错误。 (“自动启动”在这里意味着我通过使用F5键运行此应用程序来运行临时IIS服务器。)
登录控制器看起来像这样
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.OleDb;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Monarch815MVC.Controllers
{
public class loginController : Controller
{
//
// GET: /login/
public ActionResult index()
{
return View();
}
public ActionResult loginProcess(string id = "000000", string pass = "example", string scode = "co")
{
Dictionary<string, object> sessionData = null;
String SqlCommand = "USP_LOGIN";
DataSet UserInfo = dataController.ExecuteDataset(dataController.CONN_STRING, CommandType.StoredProcedure, SqlCommand, arParms);
if (UserInfo.Tables[0].Rows.Count > 0)
{
sessionData = new Dictionary<string, object>();
for (int i = 0; UserInfo.Tables[0].Rows[0].Table.Columns.Count > i; i++)
{
sessionData.Add(UserInfo.Tables[0].Rows[0].Table.Columns[i].Caption, UserInfo.Tables[0].Rows[0].ItemArray[i]);
}
}
return View();
}
}
}
(让我们忘掉loginProcess,我取了几个代码。)
我是否必须在index()或Web.config中返回阶段做些什么?或者,RouteConfig.cs?
我必须使用后缀“.mon”来调用控制器。
答案 0 :(得分:0)
我可以想到只使用黑客来解决这个问题。您可能想要创建一个虚拟操作,这将是默认操作,并且在被命中时会将请求重定向到您的index.mon
我试过以下,请检查这是否对您有所帮助。感谢。
在路线配置
中public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "DefaultY",
url: "{action}-mon/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "DefaultX2",
url: "{action}/{id}",
defaults: new { controller = "Home", action = "Startup", id = UrlParameter.Optional }
);
}
在控制器
中public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Startup()
{
return RedirectToRoute("DefaultY", new {controller = "Home", action = "Index" });
}
}
对我来说,我使用了index-mon。 index.mon无法正常工作(稍后我会探讨,也许它与静态文件有关),但上面的代码演示了这种方法。
希望有所帮助。