我创建了一个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" }
);
然而它没有用。有人请指导我应该做什么,这样我就可以实现我想要的。非常感谢你。
答案 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格式,因此结果被双重序列化。