2011-10-24 6 views
0

私は、大きなプロジェクト用に設定したWebサービスをテストするために作成した単純なSilverlight Webアプリケーションフォームを用意しています。このフォームは、基本的に名字、姓、およびミドルネームを取るテキストボックスです。ボタンをクリックすると、コードはサーバー上のWebサービスに渡され、pdf形式で印刷され、ディスクに保存され、電子メールそれ。 すべてのコードを記述しましたが、エラーはありませんが、動作しません。ファイルは保存されず、電子メールも送信されません。ここ はMainPage.xaml.csからのコードです:SilverlightからWebサービスが機能しない?

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; 

    } 
} 

}

そしてここでは、私のWebサービスからのコードです:

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("[email protected]"); 
       MailAddress SendTo = new MailAddress("[email protected]"); 

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

     } 
    } 
} 

私は何と間違っているものを言うことができません私はセットアップしました。

+0

newpdfサービスメソッドを呼び出す人がいません。投稿されたコードが完全であることを確認してください。 –

+0

あなたの '_1_FirstName'の名前を簡単な推奨規約' firstName'に変更しようとしましたか? –

+0

xapファイルはサーバーと同じドメインにホストされていますか? Silverlightでは、サーバー上のclientaccesspolicy.xmlを使用せずにクロスドメインアクセスを許可していません。それが事実ならここを見てください:http://msdn.microsoft.com/en-us/library/cc197955%28VS.95%29.aspx – Leo

答えて

0
  • "try/catch"ブロックをメソッドの先頭から開始します。おそらく、サーバーに書き込み許可エラーがあります。
  • 別の方法をお試しください。メモリ内pdfファイルを作成して電子メールで送信することができます。この場合、プログラムはサーバーに対して特別な権限を必要としません。 more info:[^]
関連する問題