我已经彻底研究了这个项目,在我看来,我正在做正确的事情。但是,它没有用,所以我的意见一定是错的!
我有一个网站,其中所有内容都在wwwroot或其他文件夹中。 我试图让HTML5 URL工作。 该网站提供5种URL类型。
我在web.config中有以下重写规则
<rule name="index.html as document root" stopProcessing="true">
<match url="^$" />
<action type="Rewrite" url="/wwwroot/index.html" />
</rule>
<rule name="static dist files" stopProcessing="true">
<match url="^(.+)$" />
<conditions>
<add input="{APPL_PHYSICAL_PATH}wwwroot\{R:1}" matchType="IsFile" />
</conditions>
<action type="Rewrite" url="/wwwroot/{R:1}" />
</rule>
<rule name="api call" stopProcessing="true">
<match url="^/api/" />
<action type="None"/>
</rule>
<rule name="authorization call" stopProcessing="true">
<match url="^/oauth/token$" />
<action type="None"/>
</rule>
<rule name="reroute html5 to index.html" stopProcessing="true">
<match url="^.+$" />
<action type="Rewrite" url="/wwwroot/index.html" />
</rule>
我看不出我做错了什么。我可以找到“stopProcessing”的文档是不精确的,但我认为这意味着如果规则匹配,则不再处理任何规则。
正在发生的事情是没有正确处理对API或身份验证的调用 - 调试API没有被调用,而是似乎被重写为wwwroot / index.html。
我确信我正在做一些非常简单的错误,但我已经尝试了所有我认为合理的事情。
任何帮助表示感谢。
服务器正在使用带有JWT的OWIN,而前端是AngularJS。我正在使用VS2015社区进行开发。
答案 0 :(得分:1)
<defaultDocument>
<files>
<clear />
<!-- This is the root document for the Angular app -->
<add value="wwwroot/index.html" />
</files>
</defaultDocument>
<rewrite>
<rules>
<rule name="static dist files" stopProcessing="true">
<match url="^(.+)$" />
<conditions>
<add input="{APPL_PHYSICAL_PATH}wwwroot\{R:1}" matchType="IsFile" />
</conditions>
<action type="Rewrite" url="/wwwroot/{R:1}" />
</rule>
<rule name="Main Rule" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<!-- Allows "api/" prefixed URLs to still hit Web API controllers
as defined in WebApiConfig -->
<add input="{REQUEST_URI}" pattern="api/" ignoreCase="true" negate="true" />
<!-- Allow "oauth/token" to do autnentication -->
<add input="{REQUEST_URI}" pattern="oauth/token" ignoreCase="true" negate="true"/>
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
经过多次反复试验后,我终于开始工作了,现在我让它工作了,这一切都很明显。
defaultDocument负责原始问题中的案例1。 &#34;静态dist文件&#34;规则处理案例2。 &#34;主要规则&#34;照顾案例5确保案件3和4保持不变。