【问题标题】:Change Web APi Root Directory更改 Web API 根目录
【发布时间】:2015-03-29 05:43:17
【问题描述】:

我有一个 Web Api 应用程序,当我向它发布文件路径时,它会向 Amazon S3 执行文件上传。如何更改此文件路径相对的根目录?现在,如果我发送myVideo.flv 作为文件路径,我的应用程序会尝试在c:\windows\system32\inetsrv\myVideo.flv 找到要上传的文件。我希望它在c:\MyApp\files\myVideo.flv 上查找文件。这是我在应用配置或 iis 中更改的内容吗?

这是我的控制器方法:

[HttpPost]
public HttpResponseMessage move([FromBody] Models.Request request)
{
    string videopath = request.videopath;

    try
    {
        PutObjectRequest putVideo = new PutObjectRequest
        {
            BucketName = WebApiConfig.AWSVideoBucket,
            Key = videopath,
            FilePath = videopath,
            ContentType = "video/flv"
        };

        PutObjectResponse videoResponse = WebApiConfig.AWSclient.PutObject(putVideo);

        if (videoResponse.HttpStatusCode == HttpStatusCode.OK)
        {
            return Request.CreateResponse(HttpStatusCode.OK);
        }
    }
    catch (FileNotFoundException e)
    {
        return Request.CreateErrorResponse(HttpStatusCode.NotFound, "File not found: " + e.Message);
    }
}

【问题讨论】:

  • 在应用程序根目录下映射一个指向所需根文件夹的目录
  • 我该怎么做?有什么例子吗?

标签: c# iis asp.net-web-api asp.net-web-api2 iis-8.5


【解决方案1】:

打开 IIS,展开站点并找到您的网站,右键单击该网站并选择“添加虚拟目录”。这个目录可以指向机器上的任何地方。在您的应用程序中,您将读取/写入应用程序根目录下的这个虚拟目录。还要注意权限,以确保访问该站点的用户对该虚拟目录具有适当的权限。

【讨论】:

  • 试过这个,它似乎没有做任何事情。无论如何,看起来我的 applicationHost.config 文件中已经有一个虚拟目录用于我的站点,它指向正确的目录。它似乎仍在寻找我提到的 inetsrv 目录中的文件。
  • request.videopath 是绝对路径还是相对路径?一个例子?
  • 相对。这将是一个类似“myVideo.flv”或“files/myVideo.flv”的字符串。
  • 您是否尝试过对c:\MyApp\files\myVideo.flv 进行硬编码以查看FilePath 是否可以从正确的位置获取文件?显然,这不是一个解决方案,但它有助于调试问题
  • 是的,硬编码可以正常工作。事实上,目前我在我的 Web.config 中硬编码了我想要的根目录,我只是从那里抓取它并将其添加到 request.videopath 中。但是,是的,我似乎应该有一种方法让应用程序自动使用这个目录。
猜你喜欢
  • 2012-02-05
  • 2019-03-31
  • 1970-01-01
  • 2018-04-01
  • 2016-02-05
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多