尝试使用 VS2010 访问 MVC4 Web-API 应用程序中的控制器操作时,出现网页不可用错误。我正在尝试上传一个小型(小于 1MB)的 pdf 文档,创建一个 byte[] 以传递给另一个服务。但是,我无法进入我的普通控制器或我的 api 控制器。我的应用程序有效,所有视图/部分/等。除了这个(带有文件上传表单的页面)之外,都显示得很好。这个视图是一个强类型的局部视图。
我尝试使用此处显示的方法:上传文件 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 }
);
}
我的路线配置:
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 }
);
}
我的 WebConfig 的一部分:
<httpHandlers>
<add path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler, dotless.Core" />
</httpHandlers>
<httpRuntime executionTimeout="99009" maxRequestLength="2097151"/>