IIS重写后无法正确加载信号器集线器文件

时间:2016-05-12 23:51:51

标签: asp.net angularjs iis angular-ui-router signalr

我正在使用ASP.NET Web API,SignalR和AngularJS处理应用程序。正在使用Ui-router并启用 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>

在visualstudio localhost中一切正常,自动生成的信号器集线器文件已成功加载。

问题是当我在服务器上部署应用程序(Windows Server 2008 R2)并运行应用程序时,<script src="signalr/hubs"></script>请求信号器集线器文件继续向我发送index.html作为响应,我认为原因可能是这行代码 <add input="{REQUEST_URI}" matchType="Pattern" pattern="signalr/(.*)" negate="true" />无法正常工作,因此请求正在重写到根URL。

我试图将模式更改为&#34;〜/ signalr /(.*)" ;,&#34;〜/(signalr)&#34;或&#34;〜/ signalr但这些都不起作用。

有什么建议吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用以下内容,应该可以解决这个问题:

public enum Field {

    ...

    public String moveMouse(Robot robot) {
        return robot.moveMouse(x, y);
    }

    public String clickLeft(Robot robot) {
        return robot.clickLeft();
    }
}