尝试使用VS2010访问MVC4 Web-API应用程序中的控制器操作时,我收到的网页不可用错误。我正在尝试上传一个小尺寸(小于1MB)的pdf文档,创建一个byte []以传递给另一个服务。但是,我无法进入我的普通控制器或我的api控制器。我的应用程序工作和所有视图/部分/等。显示正常,除了这个(具有文件上传表单的页面)。此视图是一个强类型的部分。
我已尝试使用此处显示的方法:Upload a file MVC 4 Web API .NET 4以及此处:http://blogs.msdn.com/b/henrikn/archive/2012/03/01/file-upload-and-asp-net-web-api.aspx并且两者都无效,因为我的操作属性无法找到我的操作。无论我把api / Documents还是Home / api / Documents都不行。所以我放弃了,回到我的html助手beginform,希望它能找到那样......但事实并非如此。因此,在放弃了花哨的web-api之后(无法让异步工作),我想我只是去上学并通过表单传递文件,但我得到了同样的错误。我也尝试重新创建页面,调整我的httphandlers,运行时调整,路由和apiroutes,我完全不知所措。请帮忙!
我的用户界面:
我的错误:
我的表格:
<div class="tab-pane" id="addDoc">
@using (Html.BeginForm("AddDocument", "Documents", FormMethod.Post, new { @class = "form-horizontal", @enctype = "multipart/form-data" }))
{
<label class="control-label" for="newFile">Upload : </label>
<input name="newFile" type="file" />
<input type="submit" value="Submit" class="btn btn-success"/>
}
</div>
我的API控制器: 我知道这没有意义,但我有一个断点,只是看看它是否到了这里,它没有...
[HttpPost]
public AddDocumentResponse AddDocument(HttpPostedFileBase newFile)
{
AddDocumentResponse response = new AddDocumentResponse();
return response;
}
我的普通控制器动作:
[HttpPost]
public ActionResult AddDocument(HttpPostedFileBase newFile)
{
return View("DevNotes");
}
我的WebApiConfig:
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "Home/api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
我的RouteConfig:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default2",
url: "Home/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
My WebConfig的一部分:
<httpHandlers>
<add path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler, dotless.Core" />
</httpHandlers>
<httpRuntime executionTimeout="99009" maxRequestLength="2097151"/>
答案 0 :(得分:0)
由于安装了Fiddler,我有时会遇到同样的错误。当它配置为作为代理启动时,它会对您的LAN配置进行更改,因此它可以作为代理使用,有时如果没有Fiddler,系统将无法运行。希望这会有所帮助。
答案 1 :(得分:0)
我认为......在
@using(Html.BeginForm(
"AddDocument", //Action
"Documents", // Controller (only controller name not
accept in web api route you written constant
string as ( Home/api/ then controller name)
so write like that...)
//在这里写下您想要去的网址,而不是“文档”
//如果你想要web api config ===&gt;写“Home / api / Documents”
//如果你想要在Route Config中===&gt; for 1st “Docunment”for 2nd “Home / Document”
FormMethod.Post,
new { @class = "form-horizontal",
@enctype = "multipart/form-data" }))
{ }
在您的错误页面中,请将URL视为/Index/AddDocument,这是错误的方式.... 所以检查URL是否正确,并给出控制器和操作的正确名称 在路线文件中定义....
答案 2 :(得分:0)
对我来说,问题在于nginx:
http {
client_max_body_size 0;
}
我将client_max_body_size设置为0.默认值为1M。