2

我正在使用 MVC Web Api 服务器应用程序来生成客户端数据。此外,我想将 JavaScript、XAP (Silverlight) 和 XML 文件的集合发布到我的客户端应用程序。目前,我有一个项目结构,其中这些目录通过我的 .Net 实现代码(我不喜欢)混合在一起,因为客户端应用程序使用 URI 来请求这些文件无法更改。不过,我想将客户端数据与不同文件夹中的服务器应用程序实现分开。

因此,有没有办法将客户端数据存储在单独的文件夹中,例如

  • /clientdata/JavaScript
  • /clientdata/XAP
  • /客户端数据/XML
  • /客户数据/...

在我的项目中,同时仍然能够使用 URI 访问这些文件,例如

  • /JavaScript
  • /XAP/
  • /XML/

哪些是客户端应用程序使用的 URL,并且不能轻易更改。

这是我的 Global.asax 的主要方法

AreaRegistration.RegisterAllAreas();

        RouteTable.Routes.MapRoute(
            name: "Default",
            url: string.Empty,
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new[] { "TCMsimulator.Controllers" }
        );

        var config = new Microsoft.ApplicationServer.Http.HttpConfiguration();

        RouteTable.Routes.MapServiceRoute<ResourcesService>("resources/", config);    
        RouteTable.Routes.MapServiceRoute<PublicResourcesService>("publicresources/",config);
        RouteTable.Routes.MapServiceRoute<MonitorService>("monitor/", config);

有没有办法将文件夹重定向添加到路由表,以便将 URI 中的虚拟文件夹重定向到文件系统文件夹?可以在 Apache 中使用 ModRewrite 吗?这似乎是一个简单的问题,但我还没有在 Web Api 中找到解决方案。

提前致谢!

4

2 回答 2

0

我推荐使用属性路由。这更容易理解。您可以查看映射到单个资源的多个路由的示例。

http://attributerouting.net/

于 2013-08-07T14:44:02.183 回答
0

如果这些目录仅包含文件而不包含 Web Api 生成的输出,您可能应该忽略到目录的路由并确保对它们的请求在 Web Api 之外运行,就像从 IIS 提供的常规静态文件(例如图像)一样。

于 2013-08-07T14:54:45.010 回答