這是我學習實現從網頁API下載文件中的link,我試圖下載文件,這些URL如何使用URL末尾的點來調用Web API操作?
http://localhost:49932/api/simplefiles/1.zip < - 不工作時,抱怨沒有找到 http://localhost:49932/api/simplefiles/1 <方法 - 能調用動作名稱,但爲什麼?
我知道一些與「.zip」擴展名相關的URL,導致失敗,但我只是沒有得到它,不知道什麼是錯的,任何人都可以解釋一下嗎?
接口
public interface IFileProvider
{
bool Exists(string name);
FileStream Open(string name);
long GetLength(string name);
}
控制器
public class SimpleFilesController : ApiController
{
public IFileProvider FileProvider { get; set; }
public SimpleFilesController()
{
FileProvider = new FileProvider();
}
public HttpResponseMessage Get(string fileName)
{
if (!FileProvider.Exists(fileName))
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
FileStream fileStream = FileProvider.Open(fileName);
var response = new HttpResponseMessage();
response.Content = new StreamContent(fileStream);
response.Content.Headers.ContentDisposition
= new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = fileName;
response.Content.Headers.ContentType
= new MediaTypeHeaderValue("application/octet-stream");
response.Content.Headers.ContentLength
= FileProvider.GetLength(fileName);
return response;
}
}
WebAPIConfig
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{filename}",
defaults: new { id = RouteParameter.Optional }
);
您是否嘗試過通過'http://本地主機:49932/API/simplefiles/1.zip /' –
看看這個線程,它描述了這個問題:http://stackoverflow.com/questions/429963/the-resource-cannot-be-found-error-when-there-is-a-dot-at -the-結束的-UR –