我正在构建一个与webapis通信以获取数据的Angular 2 Web应用程序,该应用程序将通过Windows身份验证托管在IIS上,我有一些问题:
很抱歉,如果这些问题无关紧要,但我是.NET开发人员,也是Angular 2和Webpack的新手。
答案 0 :(得分:2)
您可以使用angular-cli开发角度2 app。要在IIS上生产部署应用程序,您可以使用: 来自angular-cli命令提示符的ng-build --prod命令来构建应用程序。这将生成在dest文件夹中部署所需的文件。这些只是您的应用使用的HTML,javascript,css和其他资源。 您可以复制dest文件夹的内容并部署在IIS Web应用程序的文件夹中。
注意:强> Angular 2路由(使用哈希)在IIS上没有任何问题。只需创建默认的网址重写规则,该规则会将所有请求重定向到您的角应用的index.html文件。规则会将所有请求重定向到index.html,但必需的js文件和实际的角度应用网址除外(即index.html或index.html#/ {route-value}。
EX:< rules> < rule name ="默认"> < match url ="(。*)。js | index.html(。*)"否定="真" /> < action type ="重写" URL =" /index.html" /> < /规则> < /规则>
Angular 2路由(没有哈希)不适用于IIS。在纯HTML应用程序的情况下,IIS将路由传入请求,如果该位置不存在,则它会将请求重定向到错误页面。
如果是.Net MVC应用程序,您可以创建一个默认路由来处理所有传入的请求URL并将其重定向到您的角度索引视图。
MVC申请的前路:
routes.MapRoute(
name: "Angular",
url: "{*url}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { url = new AppFeatureUrlConstraint() }
public class AppFeatureUrlConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
if (values[parameterName] != null)
{
var url = values[parameterName].ToString();
if (url.StartsWith("angular/", StringComparison.InvariantCultureIgnoreCase))
return true;
else
return false;
}
return false;
}
}
答案 1 :(得分:0)
我推荐带有webpack的Angular cli。它已经集成了热模块重新加载,并具有开箱即用的开发和生产环境,具有捆绑和树摇动功能。