0

碰巧我花了一整天的时间来解决设置问题,现在我已经设置了 mvc4(从 WebForms 移动)和 vs2010 。

部署到 IIS(7 v7.5)后,除非我指定视图的完整路径,否则我无法加载项目。除了放置静态 html 或 aspx 页面

怎么可能让它重定向到 [MyFirstControl]/[MyFirstView]

是不是少了一个大师?是选择网站与 WebApplication 之间的问题吗?

我已将我的 Ip 连接到域名,在 FW 中为 iis 打开端口,我想要的只是能够通过其域名进入站点/应用程序,而不必拨入 control + view。所以我需要做什么?

顺便说一句,我正在使用基本模板,因为我想要最少的代码量,它是定义上的网站还是 Web 应用程序,作为 .NET 中的程序员,它真的很重要吗?没有网站是网站,而是应用程序,因为你永远不会只放 html,而是业务层和数据库..但我不明白名称/术语的区别

编辑

我已经用谷歌搜索了很长时间试图让它正确

 <modules>
      <remove name="UrlRoutingModule-4.0" />
      <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
    </modules>
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>


public static void RegisterRoutes(RouteCollection routes)
{
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
 }
4

2 回答 2

1

您只注册了一个路由(在新 MVC 项目中创建的默认路由):

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

defaults当 URL 中没有操作或控制器时,该参数提供默认值。因此,当您导航到根 ( /) 时,该Index操作将在HomeController.

显然,您希望根 ( /) 指向控制器MyFirstView上的操作,MyFirstControl因此原则上您只需更改defaults参数的值。但是,您的控制器类以Control但 MVC 期望它以结尾,Controller因此您必须将控制器类重命名为MyFirstController,然后配置此默认路由:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "MyFirst", action = "MyFirstView", id = UrlParameter.Optional }
);

此外,View在动作名称中使用有点令人困惑。

ASP.NET 中的路由是一个非常重要的概念,您可以通过阅读文章ASP.NET 路由来了解更多信息。

于 2016-02-28T21:08:35.583 回答
0

我太忙了,没有注意到在解决所有必需设置的问题后,我忘记确保我重置了所有测试,将控件从索引重命名为主页,并将我的视图从默认值重命名为索引或以某种方式在上面的代码中仅当我添加了编辑。我最后看了一下以确保,但事实证明这是我的错误,所以我将其留作将来参考,以便其他人从这个错误中吸取教训。

于 2016-02-28T21:10:34.300 回答