如何从Asp.net中的web api访问客户端项目目录

时间:2014-10-21 04:26:50

标签: c# asp.net angularjs asp.net-web-api2

我的Asp.net项目是多层项目,如DALDATAWebApi ......等。

我的用户界面图层是html5angularjs

的组合

我的UI图层中没有服务器端代码。

我的UI图层通过带有webapi图层的rest api进行通信。

现在我想要我的UI图层的文件夹列表。我怎样才能做到这一点 ?因为客户端脚本无权这样做。所以,只留下web api层。我可以从我的web api层获取UI层的目录列表吗?

如果是,我该怎么做?如果否,那么替代方案是什么?如何?

1 个答案:

答案 0 :(得分:3)

我认为如果没有

,您无法在同一解决方案下访问其他项目的文件夹
  1. 参考dll
  2. 分享文件夹
  3. 维护资源文件
  4. 固定路径
  5. 如果要访问文件,请创建链接文件
  6. 我认为共享文件夹是更好的解决方案:

    http://support.microsoft.com/kb/324267
    

    OR

    在您的网络配置中使用固定路径,并在需要时阅读。我写了一些代码来获取同一项目中的文件夹名称。

    API方法:

    [HttpGet]
    public IList<string> GetFolderNames(int id)
    {
        //FIND ALL FOLDERS IN FOLDER with in own project
        string location = System.Web.HttpContext.Current.Server.MapPath("parent folder name");
    
        //For fixed path location will be like as string location =@"E:\Target Folder\";
    
        System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(location);
        var folderList = new List<string>();
    
        foreach (System.IO.DirectoryInfo g in dir.GetDirectories())
        {
            //LOAD FOLDERS 
            folderList.Add(g.FullName);
        }
    
        return folderList;
    }
    

    JS方法:

     //service name
     var serviceName = 'api controller name';
     //full url
     var remoteService = "Full Url" + serviceName;
     //parameters
     var params = {
         id: 1,
     };
     //get method calling
     $http({
         url: remoteService + '/GetFolderNames',
         method: 'GET',
         params: params,
     }).then(function (result) {
         //required result
         var r = result;
     }).
     catch (function (e) {
         throw e;
     });
    

    使用服务器地图路径:

    Server.MapPath(".") returns D:\WebApps\shop\products
    Server.MapPath("..") returns D:\WebApps\shop
    Server.MapPath("~") returns D:\WebApps\shop
    Server.MapPath("/") returns C:\Inetpub\wwwroot
    Server.MapPath("/shop") returns D:\WebApps\shop