Silverlight to Web Service не работает? - PullRequest
0 голосов
/ 24 октября 2011

У меня есть простая форма веб-приложения Silverlight, которую я создал для тестирования веб-службы, которую я настроил для более крупного проекта.Эта форма в основном представляет собой текстовые поля, которые принимают имя, фамилию и отчество, и при нажатии кнопки код передается веб-службе на сервер, который печатает их в формате PDF, сохраняет его на диск, а затем отправляет электронные письма.Это.Я написал весь код, я не получаю никаких ошибок, но он не работает.Файл не сохраняется и электронное письмо не отправляется.Вот код из MainPage.xaml.cs:

using System;
using System.Collections.Generic;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ServiceModel;
using ExampleSilverlightApp.ServiceReference1;

namespace ExampleSilverlightApp
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        ServiceReference1.newpdfRequestBody proxy = new ServiceReference1.newpdfRequestBody();
        proxy._1_FirstName = textBox1.Text;
        proxy._1_lastName = textBox2.Text;
        proxy._1_middlename = textBox3.Text;

    }
}

}

А вот код из моего веб-сервиса:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Text;
using System.IO;
using System.Net.Mail;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace ExampleSilverlightApp.Web
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class MyWebService : System.Web.Services.WebService
    {

        [WebMethod]
        public void newpdf(string _1_FirstName, string _1_lastName, string _1_middlename)
        {

            string filename = @"C:\Temp\" + _1_FirstName + _1_lastName + ".pdf";
            iTextSharp.text.Document d = new iTextSharp.text.Document(PageSize.A4, 72, 72, 172, 72);
            PdfWriter.GetInstance(d, new FileStream(filename, FileMode.Create));

            d.Open();
            d.Add(new Paragraph(string.Format("First Name:", _1_FirstName)));
            d.Add(new Paragraph(string.Format("Last Name:", _1_lastName)));
            d.Add(new Paragraph(string.Format("Middle Name:", _1_middlename)));
            d.Close();
            try
            {
                MailAddress SendFrom = new MailAddress("t@hotmail.com");
                MailAddress SendTo = new MailAddress("tg@gmail.com");

                MailMessage MyMessage = new MailMessage(SendFrom, SendTo);
                MyMessage.Subject = "new test";
                MyMessage.Body = "heres a new test!";

                Attachment attachfile = new Attachment(filename);
                MyMessage.Attachments.Add(attachfile);

                SmtpClient emailClient = new SmtpClient("smtp.live.com");
                emailClient.Send(MyMessage);
            }

            catch (FileNotFoundException)
            {
                Console.WriteLine("File Lost!");
            }

        }
    }
}

Я не могу сказатьчто не так с тем, что я настроил.

1 Ответ

0 голосов
/ 24 октября 2011
  • Запустите этот блок try / catch с начала метода.возможно, у вас есть ошибка разрешения записи на сервере.
  • Попробуйте другой способ.Вы можете создать файл PDF в памяти, а затем отправить его по электронной почте.в этом случае вашей программе не требуются специальные разрешения на сервере.больше информации: [^]
...