用户输入文件作为URL中的参数,用于显示文件中的数据

时间:2018-01-03 03:10:26

标签: c# asp.net

我创建了一个ASP.NET Web服务,其中我指示了.txt文件的文件路径,该文件在我的控制器类中包含一些数据,当我运行应用程序时,显示.txt文件中的数据在JSON格式的Web浏览器上。

以下是代码:

FileReaderController

else{
    v = dec2Bin(n/2);
    v.push_back(n%2);
    return v;
}

如何编辑此代码,使用户能够将.txt文件作为参数输入到URL而不是将其硬编码为文件路径?

我已编辑 WebApiConfig.cs

public IHttpActionResult GET()
    {
        string filePath = @"C:\Users\attsuap1\Desktop\MillionCharsUpdate.txt";

        // Open the file and read
        string content = File.ReadAllText(filePath);

        //Remove escape sequences
        content = content.Replace("\t\r\n", "");

        return Ok(new { Data = content });
    }

我尝试做类似的事情来尝试包含一个参数:

ReaderController

 config.Routes.MapHttpRoute(
            name: "ReadJsonChars",
            routeTemplate: "api/readjsonchars/{fileName}",
            defaults: new { action = "Get", controller = "Reader" }
        );

然而它没有用。有人请指导我应该做什么,这样我就可以实现我想要的。非常感谢你。

2 个答案:

答案 0 :(得分:2)

此问题是因为您的路径包含点'。' (JsonChars.txt)。 您可以通过修改web.config来修复它。

<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>

答案 1 :(得分:0)

我已经成功实现了我想要的目标。这是我的代码:

<强> ReaderController.cs

public class ReaderController : ApiController
{
    [ResponseType(typeof(string))]
    public IHttpActionResult Get(String FileName)
    {
        string fileName = FileName;

        string path = "C:\\Users\\attsuap1\\Desktop\\" + fileName;

        string result = File.ReadAllText(path);

        result = result.Replace("\r\n", "");
        result = result.Replace("\t", " ");

        var resultDTO = JsonConvert.DeserializeObject(result);
        return Ok(resultDTO);
    }
}

<强> WebApiConfig.cs

config.Routes.MapHttpRoute(
        name: "ReadJsonChars",
        routeTemplate: "api/readjsonchars/{fileName}",
        defaults: new { action = "Get", controller = "Reader" }
    );

还修改了 Web.config

<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>

通过执行此操作,当我运行应用程序并在参数中输入.txt文件时,.txt文件中的数据将显示在网页上。

注意:我必须反序列化,因为.txt文件中的数据是JSON格式,并且我已经清除了XML格式,因此结果被双重序列化。