2010-12-11 149 views
1

我正在建立一个网站,存储一些文章。每篇文章的URL以/ Articles/{categoryid}/{articleslug}的形式实现URL路由。URL路由和相关链接行为

有些文章链接到图形文件。该链接没有指定完整路径,因此我将图形文件存储在/Articles/{categoryid}/{articleslug}/graphic.jpg。

这在我的桌面上正常工作。但是,当我将该网站部署到共享主机帐户时,行为是不同的。

现在,只有我将图形文件存储在/Articles/{categoryid}/graphic.jpg时,链接才有效。换句话说,在我的桌面上,{articleslug}被假定为一个目录,但在网络上它被假定为当前页面的名称。

有谁知道为什么行为改变?你可以在http://www.blackbeltcoder.com/Articles/asp/creating-website-thumbnails-in-asp-net看到一个例子。靠近顶部的屏幕截图和下载链接都是断开的链接。

+0

我刚才注意到,如果我在上面的URL中添加一个'/',那么它会被假定为一个目录名称,并且链接工作正常。但我仍然不明白为什么我不需要在我的桌面上,或者如果我可以控制这一点。 – 2010-12-11 00:01:56

+0

除了在我对joelt的评论中描述的开发服务器vs IIS之外,我倾向于在页面中指定一个标记。这样,我应该能够精确地控制相关链接的含义。 – 2010-12-11 03:02:07

回答

0

感谢您的意见。除非他们已经明确了解这个问题,否则任何人都可以解决这个问题。

无论如何,我能够自己解决它,并在我发布在Relative Links with Extension-less URLs处的相关问题中描述了解决方案。

谢谢。

0

不知道更多,它似乎最有可能的原因将是一个不同的版本或配置的IIS。网页主机的行为具有各种意义;你的桌面行为令我感到困惑。您的桌面是否从/ Articles/{categoryid}/{articleslug}重定向到/ Articles/{categoryid}/{articleslug} /?你可以使用Fiddler等来查看浏览器是否以不同的方式格式化GET请求?

+0

其他人指出,开发服务器通过ASP.NET处理程序处理所有请求,但IIS不处理。他表示,如果一个URL在IIS上以.aspx结尾,那么它很好。如果它看起来像IIS的目录URL,那么默认情况下它不会通过ASP.NET处理程序发送。这似乎是为什么我从Visual Studio中运行不同的行为。 – 2010-12-11 02:58:56

+0

要更具体地回答您的问题,我没有做任何重定向。我正在使用ASP.NET 4.0 URL路由。我想我已经安装了Fiddler,但不知道我会在找什么。我是一名开发人员,但不是管理员/ IIS人员。尽管继续努力,但这个问题仍未解决。 – 2010-12-11 16:32:02

+1

我不认为以.aspx结尾的网址很重要。如果这是问题,则您的网站在Web服务器上根本无法工作。较新版本的IIS没有这个问题。我只在我的机器上运行了一个测试,该机器具有与ASP.NET MVC 1一起部署的路由库的版本,其行为与Web服务器类似。您可以尝试在您的bin目录中部署您的路由dll版本并引用该版本,而不是GAC,然后查看会发生什么情况。 – joelt 2010-12-11 23:05:43