我必须在此路径中的mvc 5网站的网址中公开txt文件:www.mysite.com/home/somefile.txt
.Net MVC抛出404错误。
我已经在web.config上添加了处理程序
<add name="MyTxt"
path="/home/riot.txt"
verb="GET"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
我还需要做些什么呢?
[编辑1] 我创建了这样的路线
routes.MapRoute(
name: "FileRoute",
url: "home/txt.txt",
defaults: new { controller = "Home", action = "GetFile" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我改变了web.config
<modules runAllManagedModulesForAllRequests="true">
这是我的控制器
public FileResult GetFile()
{
byte[] fileBytes = System.IO.File.ReadAllBytes(Path.Combine(HostingEnvironment.ApplicationPhysicalPath,"riot.txt"));
string fileName = "riot.txt";
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
它在网址上引发404错误:http://localhost:10021/home/riot.txt
[编辑2] 在这种情况下我把正确的home/riot.txt
放进后,我输错了路线模式。我工作。谢谢你们。
答案 0 :(得分:2)
似乎你有一个可以捕获所有/home
个请求的根 - 这在MVC模板中很常见。最简单的方法是更改文件路径:
/files/test.txt
但是,如果您想使用/home
路径投放文件,则应更改HomeController
的名称,或做好工作:
GetTxt()
的家中创建一个操作,例如使用此模式在您的主路线之前定义路线:
/home/txt.txt
通过在web.config
路径中设置runAllManagedModulesForAllRequests
属性,为system.webServer/modules
中的所有请求启用所有模块:
但我不建议这样做。
答案 1 :(得分:0)
〜/解析为应用程序根目录。
/解析为网站根目录。
Path="/Home/txt.txt"
在asp.net
中使用此~/
推荐
Path="~/Home/txt.txt"