如何使用web-api发布资产

时间:2013-08-07 14:31:59

标签: c# visual-studio-2010 web-services asp.net-mvc-4 asp.net-web-api

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

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

  • / clientdata / JavaScript的
  • / clientdata / XAP
  • / clientdata / XML
  • / clientdata /...

在我的项目中,同时仍然可以使用像

这样的URI访问这些文件
  • / JavaScript的
  • / XAP /
  • / XML /

客户端应用使用的网址是多少,而且无法轻易更改。

这是我的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中找到解决方案。

提前致谢!

2 个答案:

答案 0 :(得分:0)

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

http://attributerouting.net/

答案 1 :(得分:0)

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