2014-11-27 4 views
0

Я создал простую веб-форму asp.net, которая загружает и загружает файл со стороны сервера, и работает отлично, но когда я копировал все функции в веб-методах для создания службы, она дает ошибки. пожалуйста, помогите мне с этим кодом.ошибки при создании веб-сервиса

WebService.asmx

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 
using System.Web.UI; 
using System.IO; 
using System.Data; 
using System.Web.Util; 
using System.ComponentModel; 
using System.Windows; 
using System.Web.UI.WebControls; 
using System.Web.Services.Protocols; 
using Microsoft.AspNet.Membership.OpenAuth; 
using System.Xml; 
using System.Text; 


namespace MovieUploaderService.Service 
{ 
/// <summary> 
/// Summary description for WebService1 
/// </summary> 
[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.ComponentModel.ToolboxItem(false)] 
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService] 
public class WebService1 : System.Web.Services.WebService 
{ 

    [WebMethod] 
    public void Page_Load(object sender, EventArgs e) 
    { 
     this.Form.Enctype = "multipart/form-data"; 
     if (!IsPostBack) 
     { 
      GetUploadedFiles(); 
     } 
    } 


    [WebMethod] 

    public void GetUploadedFiles() 
    { 
     using (Database1Entities SampleDb = new Database1Entities()) 
     { 


      DataGridView.DataSource = SampleDb.UploadFiles.ToList(); 

      DataGridView.DataBind(); 
     } 
    } 


    [WebMethod] 
    public void DataGridView_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "DownloadFile") 
     { 
      int File_ID = Convert.ToInt32(e.CommandArgument.ToString()); 
      using (Database1Entities SampleDb = new Database1Entities()) 
      { 
       var File = SampleDb.UploadFiles.Where(f => f.Id.Equals(File_ID)).FirstOrDefault(); 
       if (File != null) 
       { 



        Response.ContentType = File.ContentType; 
        Response.AddHeader("content-disposition", "attachment; filename=" + File.Name); 
        Response.BinaryWrite(File.Content); 
        Response.Flush(); 
        Response.End(); 
       } 
      } 
     } 
    } 

    [WebMethod] 
    public void BtnUploadFile_Click(object sender, EventArgs e) 
    { 
     HttpFileCollection File_Collection = Request.Files; 
     using (Database1Entities SampleDb = new Database1Entities()) 
     { 
      foreach (string File_Uploader in File_Collection) 
      { 
       HttpPostedFile Posted_File = File_Collection[File_Uploader]; 
       if (Posted_File.ContentLength > 0) 
       { 
        BinaryReader Binary_Reader = new BinaryReader(Posted_File.InputStream); 
        byte[] File_Buffer = Binary_Reader.ReadBytes(Posted_File.ContentLength); 
        SampleDb.UploadFiles.Add(new UploadFile 
        { 
         Name = Posted_File.FileName, 
         ContentType = Posted_File.ContentType, 
         Extension = Path.GetExtension(Posted_File.FileName), 
         Size = Posted_File.ContentLength, 
         Content = File_Buffer 
        }); 
       } 
      } 
      SampleDb.SaveChanges(); 
     } 
     GetUploadedFiles(); 
    } 

    } 
    } 

Проблема с почтой и ответ .. Хотя вид сетки также делает ошибки

стороне клиента код ASPX файл

ASPX

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"    CodeBehind="Sample.aspx.cs" Inherits="WebApplication8.Sample" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 
    <script src="Scripts/jquery-1.10.2.js"></script> 
    <div class="form-horizontal"> 
    <h4>Uploading Multiple Files</h4> 
    <hr /> 
    <asp:ValidationSummary runat="server" CssClass="text-danger" /> 
    <div class="form-group"> 
     <asp:Label runat="server" CssClass="col-md-2 control-label">Choose File</asp:Label> 
     <div class="col-md-10" id="MultipleFileUploader"> 
      <p> 
       <asp:FileUpload runat="server" ID="FileUploader" CssClass="form-control" /> 
       <a href="#" id="AddAnotherUploader">Add Files</a> 
      </p> 
     </div> 
    </div> 
    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <asp:Button runat="server" ID="BtnUploadFile" OnClick="BtnUploadFile_Click" 
      Text="Upload Files" CssClass="btn btn-default" /> 
     </div> 
    </div> 
    <div class="form-group"> 
     <asp:Label runat="server" CssClass="col-md-2 control-label">Select Files:</asp:Label> 
     <div class="col-md-10"> 
      <asp:GridView runat="server" ID="DataGridView" AutoGenerateColumns="false" OnRowCommand="DataGridView_RowCommand" CssClass="form-control"> 
       <Columns> 
        <asp:BoundField HeaderText="File Name" DataField="Name" /> 
        <asp:BoundField HeaderText="File Size" DataField="Size" /> 
        <asp:TemplateField HeaderText="Get File"> 
         <ItemTemplate> 
          <asp:LinkButton ID="LbnDownload" runat="server"  CommandName="DownloadFile" 
           CommandArgument='<%# Eval("Id") %>'>Download</asp:LinkButton> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
      </asp:GridView> 
     </div> 
    </div> 
    </div> 
</asp:Content> 

Я начинаю с курса веб-услуг, пожалуйста, помогите мне с этим .. :(

ответ

1

Dont добавить свои события управления в WebService.asmx просто написать методы для WebService файлов и вызывать их на странице .aspx, содержащий событие Control

0

Было бы полезно сообщить, какую ошибку мы получили.

Но на самом деле веб-сервис не должен использоваться со стороной ASPX. На стороне сервера публикуются некоторые методы, к которым можно получить доступ и выполнить через HTTP-вызовы клиентами. Эти вызовы могут быть сделаны от клиента к серверу с прокси-сервером (например, прокси на клиенте можно просто создать, добавив веб-ссылку с Visual Studio, например). Нет ничего общего с графическим интерфейсом (например, ASPX).

Кроме того, я не думаю, что веб-сервис - лучший способ загрузить фильмы на сервер. FTP лучше для больших файлов. Я думаю, что вы нарушите квоту веб-сервисов с фильмами.

+0

есть ли способ увеличить размер квоты? – tabia

+1

Да, самый простой способ - сделать это через конфигурационный файл: [http://stackoverflow.com/questions/884235/wcf-how-to-increase-message-size-quota](http://stackoverflow.com/ вопросы/884235/ФОС-хау к увеличению размера сообщения-квота). Это может быть сделано и программно, но наилучшая оценка - с конфигурационным файлом. –

+0

работал :) thankyou – tabia

0

веб-службы и веб-сайт совершенно разные вещи. поэтому не копируйте все коды с вашего веб-сайта на веб-службы. Идеальный способ сделать это - создать новый проект веб-сервиса. вы можете найти разницу между веб-сервисом и веб-приложением, обратившись к этим статьям. in here и here