MVC Durandal应用程序仅适用于服务器根URL

时间:2014-03-31 22:06:31

标签: iis durandal

当我从Visual Studio 2013 Durandal模板创建项目并运行项目时,它会从我的开发Web服务器中提供Durandal Starter Kit Web的工作实例。

当我将其部署到IIS Web应用程序时,它会到达启动画面,然后停止。 Fiddler透露404尝试GET /App/main.js HTTP/1.1这显然是它停滞的原因。

这给我们带来了一个问题:大概有些设置需要引起注意,但是在什么地方和哪里?这应该是GET /c2/App/main.js HTTP/1.1或可能是GET App/main.js HTTP/1.1

2 个答案:

答案 0 :(得分:3)

我不知道应该是我还是项目模板的作者感到尴尬。在Index.cshtml文件中,main.js由以下行加载:

<script type="text/javascript" 
        src="~/Scripts/require.js" 
        data-main="/App/main">
</script>

真的?一个绝对的URL?

至少它很容易修复。

删除前导斜杠或向HTML添加基本标记,如下所示:

<html>
  <head>
    <base href="http://myserver/path/to/app/root/" />

您最好从data-main删除前导斜杠,因为您可以将相对路径发布到任何位置。我想你也可以为基本标签指定一个相对基数,但我从来没有对它进行过测试,而且还有更多的代码。

<script type="text/javascript" 
        src="~/Scripts/require.js" 
        data-main="App/main">
</script>

答案 1 :(得分:2)

无论路线如何,这都有效。如果您使用的是ASP.NET MVC - Razor

data-main="@Url.Content("~/Scripts/app/main")"

假设您的文件位于 c2 / Scripts / app / main.js ,其中 c2 是您的项目文件夹。