asp.net - IIS重写后,ASP.NET 无法正确加载signalr集线器文件

  显示原文与译文双语对照的内容

我正在使用 ASP.NET Web API,SignalR和AngularJS的应用程序。 用户界面路由器正在使用,而且html5模式的收费是。

我已经编辑了 Web.Config 文件,重写规则如下所示:


<rule name="AngularJS Routes" stopProcessing="true">


 <match url=".*"/>


 <conditions logicalGrouping="MatchAll">


 <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>


 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>


 <add input="{REQUEST_URI}" matchType="Pattern" pattern="api/(.*)" negate="true"/>


 <add input="{REQUEST_URI}" matchType="Pattern" pattern="signalr/(.*)" negate="true"/>


 </conditions>


 <action type="Rewrite" url="/"/>


</rule>



在is主机中工作得很好,自动生成的signalr集线器文件已经成功加载。

问题是在服务器( Windows Server 2008 R2 ) 上部署应用程序并运行应用程序时, <script src="signalr/hubs"></script> 对signalr文件的请求 keep sending index.html response,我认为原因可能就是这一行代码<add input="{REQUEST_URI}" matchType="Pattern" pattern="signalr/(.*)" negate="true"/> 无法正常工作,因此请求被重写到 root url 。

我尝试将 Pattern 改为"~/signalr/(.*)","~/( signalr )"或者"/signalr but但这些工作都没有。

有什么建议谢谢。

时间: 原作者:

使用下面的命令,应该能够实现以下目的:


<add input="{REQUEST_URI}" pattern="^/(signalr)" negate="true"/>



...