File upload 带有MVC4 Web API的文件上载表单:获取错误101(net::ERR_CONNECTION_RESET):连接已重置。错误

File upload 带有MVC4 Web API的文件上载表单:获取错误101(net::ERR_CONNECTION_RESET):连接已重置。错误,file-upload,asp.net-mvc-4,asp.net-web-api,interrupted-exception,asp.net-web-api-routing,File Upload,Asp.net Mvc 4,Asp.net Web Api,Interrupted Exception,Asp.net Web Api Routing,尝试使用VS2010访问MVC4 Web API应用程序中的控制器操作时,我收到一个网页不可用错误。我试图上传一个小尺寸(小于1MB)的pdf文档,创建一个byte[]以传递到另一个服务。然而,我无法进入我的普通控制器或api控制器。我的应用程序工作正常,除此之外,所有视图/部分/等都显示良好(带有文件上传表单的页面)。此视图是强类型的局部视图 我尝试过使用此处显示的方法:以及此处显示的方法:但这两种方法都不起作用,因为我的action属性找不到我的action。无论我放api/文档还是主页/a

尝试使用VS2010访问MVC4 Web API应用程序中的控制器操作时,我收到一个网页不可用错误。我试图上传一个小尺寸(小于1MB)的pdf文档,创建一个byte[]以传递到另一个服务。然而,我无法进入我的普通控制器或api控制器。我的应用程序工作正常,除此之外,所有视图/部分/等都显示良好(带有文件上传表单的页面)。此视图是强类型的局部视图

我尝试过使用此处显示的方法:以及此处显示的方法:但这两种方法都不起作用,因为我的action属性找不到我的action。无论我放api/文档还是主页/api/文档,它都不会工作。所以我放弃了,回到了我的html助手beginform,希望它能找到那样的方式…但它没有。因此,在放弃了那些花哨的web api(无法使异步工作)之后,我想我应该回到老派,通过表单传递文件,但我得到了同样的错误。我还尝试重新创建页面,调整我的HttpHandler、运行时调整、路由和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>
我的正常控制器操作:

    [HttpPost]
    public ActionResult AddDocument(HttpPostedFileBase newFile)
    {
        return View("DevNotes");
    }
我的网站配置:

    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 }
        );
    }
我的网络配置的一部分:

    <httpHandlers>
       <add path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler, dotless.Core" />
    </httpHandlers>
    <httpRuntime executionTimeout="99009" maxRequestLength="2097151"/>

由于安装了Fiddler,我有时会出现同样的错误。当它被配置为作为代理启动时,它会对您的LAN配置进行更改,使其作为代理运行,有时如果没有Fiddler,系统将无法工作。希望这有帮助。

我想

@使用(Html.begin)(

//在这里,您可以写下您的URL要去的地方,而不是“文档”

//如果您想要web api配置==>写“Home/api/Documents”

//如果要在路由配置中==>第1个“文档未满足”第2个“主页/文档”

在您的错误页面中,将URL视为/Index/AddDocument…,这是错误的方式。。。。 所以,检查URL是否正确运行,并正确给出控制器和操作的名称
在路由文件中定义…

对于我来说,问题在于nginx:

http {
    client_max_body_size 0;
}
我将client_max_body_size设置为0。默认值为1M

资料来源:

                    "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...)
                    FormMethod.Post, 
                    new { @class = "form-horizontal",
                          @enctype = "multipart/form-data" }))
    {   }
http {
    client_max_body_size 0;
}