2

私は Web サービスを持っていますが、それを Windows アプリケーション フォームでテストする方法を知る必要があります。

ここからサービス開始です。フォーム コードをボタン内に配置するか、それとも単にラベルで返すか? c# や .net にあまり詳しくありませんが、暗号化が機能していることを確認するために文字列を返すだけで、Web サービスを正常に呼び出すことができました。

<%@ WebService Language="C#" Class="UserEncryptionLink.EncryptUserLink" %>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Schema;
using System.Xml.Serialization;
using System.Text;
using System.Security.Cryptography;




namespace UserEncryptionLink
{
/// <summary>
   /// This Web Service is to encrypt user details and display them in the URL when  they   click on a link taking them to InfoExchange
/// </summary>
[WebService(Namespace = " Webspace name")]
[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 EncryptUserLink : System.Web.Services.WebService
{
[WebMethod]
public void TestCypher()
{
    var key = "12345";
    var vector = "12345";
    var username = "YOURDOMAIN\\YOURUSERNAME";
    var url = "sitename.com";
    var it = GetSingleSignOnUrl(url, username, key, vector);
}

そして私のフォーム

はい、サービスを参照するフォームを取得しました。次のようになります。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using FormForEncrypt.nameofURL;
using System.Net;



namespace FormForEncrypt
{


public partial class EncryptForm : Form
{


    public EncryptForm()
    {
        InitializeComponent();


    }

    // creates an instance of the web service as a member of the class, will put it down below, doesn't seem to work though declared in the using statement
    private nameofURL.EncryptUserLink userform = new nameofUrl.EncryptUserLink();



    [System.Web.Services.WebMethod]

    private void testButton_Click_1(object sender, EventArgs e)

    {
        //method to send on button click, then recieve the string to show it works, it should come out as http://CLIENTNAME.info-exchange.com/yyyyMMddHHmmssDomainUsername 

        //create instances of the details


        string[] it;

        //send string

        //recieve string and display, it must display the same as what was sent. 


    }
}

}

4

1 に答える 1

0

フォーム コードをボタン内に配置する必要があるのか​​、ラベルに返す必要があるのか​​ わかりませんか? Web サービスには、フォームやラベルなどの概念がありません。それらは単なるサービスです...フォームもコントロールもありません...呼び出しによって提供されるのを待っている「生のコード」であり、ホスティングプロトコル(IIS、WAS、セルフホスティングアプリなど)がそれをスピンアップしますそしてサービスを実行しています。

それを呼び出すという点では...まあ、アプリケーションからどこで呼び出したいかによって異なります。ボタンのクリック、タイマー、フォームの読み込みなど、あなたとあなたのアプリケーションロジックに依存します。

現在の Web メソッドである TestChypher は、現時点では何も返しません。文字列が一致するかどうかを示すブール値を返す必要があると思いますか?

繰り返しますが、あなたとあなたが何を返したいかによって異なります。文字列を返したい場合は、メソッドのシグネチャを文字列を返すように変更します。そのため、「void」を「string」に変更し、そのメソッドで、返したい文字列を返します。

例 - 短い抜粋:

[WebMethod]
public void SayHello()
{
   return "Hello";
}
于 2013-11-13T11:41:06.030 に答える