【问题标题】:File upload form with MVC4 Web-API: Getting Error 101 (net::ERR_CONNECTION_RESET): The connection was reset. Error使用 MVC4 Web-API 的文件上传表单:出现错误 101 (net::ERR_CONNECTION_RESET):连接已重置。错误
【发布时间】:2013-01-20 18:05:04
【问题描述】:

我在尝试使用 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 }
        );
    }

我的路由配置:

    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"/>

【问题讨论】:

    标签: file-upload asp.net-mvc-4 asp.net-web-api interrupted-exception asp.net-web-api-routing


    【解决方案1】:

    由于安装了 Fiddler,我有时会遇到同样的错误。当它被配置为作为代理启动时,它会更改您的 LAN 配置,因此它可以作为代理工作,有时系统在没有 Fiddler 的情况下将无法工作。希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我认为....在

      @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...)
      

      //这里你写你的URL想去哪里而不是“文档”

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

      // 如果你想在 Route Config ===> for 1st "Docunment" for 2nd "Home/Document"

                          FormMethod.Post, 
                          new { @class = "form-horizontal",
                                @enctype = "multipart/form-data" }))
          {   }
      

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

      【讨论】:

        【解决方案3】:

        对我来说,问题出在 nginx 上:

        http {
            client_max_body_size 0;
        }
        

        我将 client_max_body_size 设置为 0。默认为 1M。

        来源:https://serverfault.com/a/401732

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-05
          • 1970-01-01
          • 2010-11-15
          • 1970-01-01
          • 1970-01-01
          • 2012-11-08
          • 2013-09-28
          • 1970-01-01
          相关资源
          最近更新 更多