2013-11-22 4 views
2

Мои сообщения методВызов метода POST службы обслуживания wcf с помощью jquery?

[OperationContract] 
    [WebInvoke(Method = "POST", UriTemplate = "Service/UpLoadCarPhoto", 
     BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    public string UpLoadCarPhoto(Stream imageFile) 
    { 

     try 
     { 
      _db.CarPhotoes.Add(new CarPhoto 
      { 
       CarPhotoId = 7, 
       CarId = 2, 
       CarPhoto1 = ReadFully(imageFile) 
      }); 
      _db.SaveChanges(); 
      return "Photo Saved"; 
     } 
     catch (Exception ex) 
     { 

      return ex.InnerException.InnerException.Message; 
     } 

    } 

My Web Config

<?xml version="1.0"?> 
<configuration> 

    <system.web> 
     <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
      <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     </assemblies> 
     </compilation> 
    </system.web> 

    <system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
     multipleSiteBindingsEnabled="true" /> 
    <standardEndpoints> 
     <webHttpEndpoint> 
     <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" /> 
     </webHttpEndpoint> 
    </standardEndpoints> 
    </system.serviceModel> 

    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
    <connectionStrings> 

    <add name="CarHaatDbContext" connectionString="metadata=res://*/Entities.CarHaatModel.csdl|res://*/Entities.CarHaatModel.ssdl|res://*/Entities.CarHaatModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\CarHaatDatabase.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=False&quot;" providerName="System.Data.EntityClient" /> 
    <!--<add name="CarHaatDbContext" connectionString="Data Source=.\SQLEXPRESS; 
AttachDbFilename=F:\8-Semester Project\11-20-13\CarHaat\CarHaatWcfService\App_Data\CarHaatDatabase.mdf; 
Integrated Security=True; Connect Timeout=30; User Instance=True" />--> 
    </connectionStrings> 


</configuration> 

Как я зову эту услугу

@{ 
    ViewBag.Title = "Home Page"; 
} 
<script src="@Url.Content("~/Scripts/jquery-1.10.2.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.base64.js")" type="text/javascript"></script> 


<input type="file" name="UploadImage" id="CarImage"/> 
<input type="button" id="uploadImage"/> 



<script type="text/javascript"> 

    var getCarUrl = 'http://localhost:62051/Service/GetCarList'; 
    var postCarUrl = 'http://localhost:62051/Service/UpLoadCarPhoto'; 

    $('#uploadImage').click(
    function() { 
     var im = $('#CarImage').get(0).files[0]; 
     alert(im); 
     $.ajax({ 
      cache: false, 
      type: "POST", 

      url: postCarUrl, 

      data: im, 
      contentType: "application/json; charset=utf-8", 
      success: function (response) { 
       alert(response); 
      }, 
      error: function (xhr) { 
       alert(xhr.status); 
      } 
     }); 

      } 
    ); 


</script> 

я получил следующее сообщение об ошибке

NS_NOINTERFACE: Component does not have requested interface [nsIDOMBlob.slice] 
+0

Я столкнулся с чем-то похожим ... не увидев тестирование всего кода, о котором я не могу сказать наверняка, это проблема, но при этом не строковые данные в данные для вашего ajax могут привести к этой ошибке. Поскольку ваш тип контента - JSON, вызовите JSON.stringify (im) в данных. MAYBE, это исправление. – Gobo

+0

Спасибо большое @Gobo –

+0

Был ли это ответом? Если да, могу ли я официально ответить за вас? – Gobo

ответ

0

Seeing, как у наш тип контента - JSON, вызывающий JSON.stringify (im) в области данных вашего вызова AJAX должен исправить это. Эта ошибка может возникнуть из-за отсутствия данных, передаваемых в качестве полезной нагрузки AJAX.

Смежные вопросы