当前位置: 首页 > 面试题库 >

带有html5mode和路由的asp.net mvc托管Angular应用

彭弘伟
2023-03-14
问题内容

好的,所以我在asp.net mvc
5中托管了angularjs,并html5mode(true)在我的angular应用程序中使用摆脱了网址中的所有哈希符号。一切正常,但是,使用我当前的设置,如下所示:

RouteConfig.cs:

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

所以,当我浏览到 http://url/app/myangularroute 我的 吴/索引 操作返回包含NG-
View容器和角应用视图现在是活动的,并与所提供的路线工作

现在,我的问题是,当我导航到 http://url/app/
它时,返回一个目录列表不允许的错误,我无法理解。由于angle参数设置为可选参数,是否应该返回索引操作?

我可以以某种方式完全避免使用“
app”,仍然可以使我的角度应用程序正常工作吗?我尝试了一些重写规则,但这给了我很多错误,因为我正在使用MVC捆绑和压缩功能。

我可以将url设置为当前的格式,而不需要提供可选参数,例如 http://url/app/

另外,它只是一个有角度的应用程序,除了index.cshtml包装程序外没有其他mvc视图。


问题答案:

尝试将其添加到您的web.config sytem.webserver设置中。

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
<system.webServer>

编辑

尝试更改RouteConfig.cs,如下所示:

    routes.MapRoute(
        name: "Default",
        url: "app/{*.}",
        defaults: new { controller = "Ng", action = "Index" }
    );

编辑2:

我已经完全放弃了这个问题,但是现在我才意识到也许问题是您尚未将IIS服务器配置为可与Html5Mode一起使用,请查看以下内容:https : //github.com/angular-ui/ ui-router / wiki
/常见问题解答#如何配置您的服务器以使用html5mode

具体来说这部分:

Azure IIS重写:

<system.webServer>
  <rewrite>
    <rules> 
      <rule name="Main Rule" stopProcessing="true">
        <match url=".*" />
        <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />                                 
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
        <action type="Rewrite" url="/" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

我希望这个对你有用。



 类似资料:
  • 问题内容: 我使用Spring Boot启动Web应用程序。它使用一个简单的主类来启动嵌入式tomcat服务器: 我想以他可以处理的angularjs html5mode的方式配置服务器 其他用户的相关发布表明你需要重定向到根目录。html5模式从网址中删除hashbag。如果刷新页面,则服务器找不到该页面,因为他不处hash。 问题答案: 我找到了可以接受的解决方案。 angularjs应用必须

  • 我在做一些关于Camel-CXf集成的研究,对下面的场景感到困惑。 所以我实现了一个Restendpoint 实现如下 } 路线 将其路由到实现中。但是由于实现返回一个响应对象,我不知道如何绕过这个对象构建路由。 一旦调用进入实现,我如何执行其他路由并发送回响应?在这种情况下,实现返回一个自定义对象。 其他路由如何附加到 CXF 路由? 我的 CXF 实现是否应该始终返回无效类型?如我所见,要访问

  • 下面是我的场景: 我正在使用带有Angular 4的Spring boot 我正在使用angull-cli生成构建文件,并将其放在resource-static文件夹下。 运行my pom.xml时,所有静态文件夹都在target-->Project文件夹-->WEB-INF-->Classes-->静态文件夹(预期)下复制 每次单击整个/整个URL都不会改变。如果我使用以下配置: `@配置公共类

  • 我对Java服务器端编程还不熟悉,我的问题基本上是使用Servlets(低级别,不使用spring mvc等)开始一个起点,然后从node开始构建。js后台,其中路由定义将以函数(,等),函数将在http方法之一(GET、post、PUT、DELETE)的参数中接收和。 如果有人可以帮助我,从一个servlet类中的路由(比如说)开始定义方法,这个servlet类映射到http方法,同时在其参数中

  • 我尝试在Angular 7中通过路由实现标准JWT授权。我的app-routing.module.ts部分: 我也有auth.service.ts: 在Heade组件中,我有带有“login”项的下拉列表,我的代码有: 我做错了什么? 如何刷新令牌?

  • 问题内容: 我正在html 5模式下使用angularjs。似乎可以控制页面上的所有href。但是,如果我想链接到该应用程序同一域中的某个内容,但实际上不在该应用程序中,则该怎么办?一个示例是pdf。 如果我做的角度会尝试使用html5mode并使用路由提供程序来确定应该加载哪个视图。但是我实际上希望浏览器以常规方式转到该页面。 唯一的方法是与路由提供者制定规则,并使用window.locatio