以angular2-quickstart为例。需要部署哪些文件以及需要设置哪些设置才能从IIS启动此Web应用程序?
这是我选择编译为JavaScript的Typescript教程。
答案 0 :(得分:10)
为我设置Angular 2是一个很大的问题,因为HTML5路由(没有hashbang)不起作用。
要使一个Angular2项目在没有提供的IIS环境中使用Angular-CLI(你还需要它来构建它!):
您需要的最短构建命令是:
ng b
在构建文件夹中(如果您没有添加外部/不同的文件夹,这将是' dist &# 39;项目中的文件夹),将内容复制到IIS服务器。
确保IIS服务器的文件夹具有IIS_IUSRS组和IUSR用户访问它所需的权限。 (右键单击文件夹 - > gt;属性 - >安全性 - >编辑 - >添加,然后输入。您可以点击“检查姓名”按钮以确保它是正确的你输入的内容
您需要解决的下一个问题是将 web.config 文件放入服务器文件夹以修复路由问题。
如果我们使用Apache,我们需要一个.htaccess,但是对于IIS ,我们需要使用web.config。如果您的应用程序从服务器的根目录路由,那么here找到了我的工作。 (注意:正如@Demortes提醒的那样,这将需要在您的IIS环境中添加一个名为URLRewrite的附加模块)
此(web.config)文件位于服务器的根目录中。
希望这可以帮助任何遇到类似问题的人:)
干杯。
答案 1 :(得分:5)
下载并安装IIS重写插件https://www.iis.net/downloads/microsoft/url-rewrite
在默认网站下创建应用程序。
在构建index.html之前,将基础href =“/”更改为基础href =“//”
Web配置结构。
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Main Rule" >
<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="/<appname subfolder>/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
不适用
在angular-cli.json中将web.config放入资产块
"assets": [
"assets",
"favicon.ico",
"Web.config"
],
在angular-cli.josn中放入自定义css路径示例,以便将它打包在styles..bundle.cs
中 "styles": [
"../node_modules/font-awesome/css/font-awesome.min.css",
"../node_modules/bootstrap/dist/css/bootstrap.min.css",
"assets/site.css",
"assets/page.css",
"assets/menu.css",
"styles.css",
"../node_modules/primeng/resources/primeng.min.css",
"../node_modules/primeng/resources/themes/omega/theme.css"
],
如果您有自定义脚本,请将这些路径放在脚本部分示例
下 "scripts": [
"../node_modules/jquery/dist/jquery.js",
"index.js"
],
ng build --prod
替代构建命令:
ng build --prod --output-path 'C:\inetpub\wwwroot\<appname subfolder>' --base-href /<appname subfolder>'/
b-如果您不想复制app的dist文件夹和wwwroot文件夹。
注1:以下命令仅在您打开具有管理权限的可视代码(或任何终端应用程序)时才有效。否则,在wwwroot中创建输出文件夹的mkdir命令将失败。
检查其中一个帖子的直接引用。不确定是否更改了IIS_IUSRS组和IUSR用户的安全权限... wwwroot \ 如其中一个网站链接所述是必需的。可能不是必需的,但我在此强调它,以便您牢记。
直接引用其他用法:“确保IIS服务器的文件夹具有IIS_IUSRS组和IUSR用户访问它所需的权限。(右键单击文件夹 - &gt;属性 - &gt;安全性 - &gt;编辑 - &gt;添加,然后输入。您可以点击“检查名称”按钮以确保输入的是正确的“”
参考文献: - How and what to deploy Angular2 to IIS - https://www.youtube.com/watch?v=K0XORWxG11k
答案 2 :(得分:4)
webapp本身不需要服务器智能,因为它只是静态文件 - 网络资产(* .js,* .html文件等)。静态文件是angular2-quickstart
生成的构建过程的输出,您在开发环境中运行(可能在您的个人计算机本地)。开发环境需要node
(+ npm
)。事实上,您可以在本地开发环境中测试本教程,而无需任何外部服务器。
编辑: 如果你查看package.json,你可以看到它有lite-server:
"scripts": {
"start": "npm run lite",
"lite": "lite-server"
},
Lite服务器是一个模拟简单(Web)文件服务器的小型服务器。
打开为Web应用程序提供服务的轻量级开发节点服务器 它在浏览器中,当html或javascript更改时刷新,注入 CSS使用套接字进行更改,并且当路由不是时使用后备页面 找到。
为了给您答案,使用IIS提供您的应用,您只需要http://docs.asp.net/en/latest/fundamentals/static-files.html
答案 3 :(得分:1)
我创建了一个小型github项目,该项目目前已于今天(2016年10月13日)运行Angular2,该项目在IIS 7.5中运行,具有路由和ng服务。 它确实使用基于散列的URL策略。 它使用angular-cli,read me详细介绍了如何在IIS或ng服务下进行设置。
答案 4 :(得分:1)
Angular 2路由(使用哈希)在IIS上没有任何问题。只需创建默认的网址重写规则,该规则会将所有请求重定向到您的角应用的index.html文件。规则会将所有请求重定向到index.html,但必需的js文件和实际的角度应用网址除外(即index.html或index.html#/ {route-value}。
EX:
<rules>
<rule name="Default">
<match url="(.* ).js|index.html(.*)" negate="true" />
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
Angular 2路由(没有哈希)不适用于IIS。 如果是纯HTML应用程序 IIS将路由传入请求,如果该位置不存在,则会将请求重定向到错误页面。
如果是.Net MVC应用程序,您可以创建一个默认路由来处理所有传入的请求网址,并将其重定向到您的角度索引视图。
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;
}
}
答案 5 :(得分:1)
Here是在IIS中部署角度应用程序的一个很好的详细解释。作为单独网站发布的总结步骤如下: -
ng build --prod
将web.config文件添加到文件夹C:\ Publish,其中包含以下内容: -
<configuration> <system.webServer> <rewrite> <rules> <rule name="Angular Routes" 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> </configuration>
全部完成,现在只需访问IIS并浏览您的网站,您就会看到它正常运行。
答案 6 :(得分:-1)
在你构建它之后,将所有文件复制到你的IIS服务器的折叠中,它只包含html,css和js文件,所以只需将其托管为静态网站。
适用于任何Web服务器,无论是Apache,IIS还是nginx。