4

在VS2010中嘗試訪問MVC4 Web-API應用程序中的控制器操作時,出現網頁不可用錯誤。我試圖上傳一個小尺寸(小於1MB)的pdf文檔,創建一個字節[]傳遞給另一個服務。但是,我無法進入我的常規控制器或我的api控制器。我的應用程序工作和所有意見/部分/等。除了這一個(帶有文件上傳表單的頁面)顯示正常。這個視圖是一個強類型的部分。使用MVC4 Web-API的文件上傳表單:獲取錯誤101(net :: ERR_CONNECTION_RESET):連接已重置。錯誤

我試過使用這裏顯示的方法: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,並完全處於虧損狀態。請幫忙!

我的UI:

form with url 我的錯誤: Error

我的形式:

<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 } 
     ); 
    } 

我的WebConfig的部分:

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

回答

0

由於安裝了Fiddler,我有時會出現相同的錯誤。當它被配置爲作爲代理啓動時,它會更改LAN配置,因此它可以作爲代理使用,有時如果沒有Fiddler,系統將無法工作。希望這可以幫助。

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

//您的網址想要去的 「文檔」

,而不是在這裏,你寫//如果你想網頁API配置===>寫 「首頁/ API /文檔」

//如果在路由配置要===>爲 「Docunment」 爲第二 「首頁/文檔」

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

在你的錯誤頁面中看到URL爲/Index/AddDocument ......這是錯誤的方式.... 所以檢查URL是否正確或正確地給出控制器和操作的名稱作爲 DEFINE IN ROUTE FILES .. ..

相關問題