私はVisualStudio2013を使用しています。このasmxが由来するコードは完全には動作するが、asmx WebServiceの使用方法はわかりません。ここから9ヤード全体をダウンロードしましたhttps://sourceforge.net/projects/shorturl-dotnet/C#asmx Webサービスからデータを取得/設定する方法
次のCreateUrl()WebMethodのプロパティを取得/設定する方法がわかりません。私はWebService全体の使い方を学びたいと思いますが、ここから始めました。
次の例では、URLを短縮して他のタスクを実行するCreateURL()メソッドにURLを送信します。返されたShortUrl.Containerクラスからプロパティを取得する方法がわかりません:クラスが呼び出しメソッドに返された後、データへのアクセスに成功しませんでした。
// WebMethod属性
public class API : System.Web.Services.WebService {
[WebMethod]
public ShortUrl.Container CreateUrl(string real_url)
{
ShortUrl.Container oShortUrl = new ShortUrl.Container();
oShortUrl.RealUrl = real_url;
oShortUrl.ShortenedUrl = ShortUrl.Utils.UniqueShortUrl();
oShortUrl.CreateDate = DateTime.Now;
oShortUrl.CreatedBy = HttpContext.Current.Request.UserHostAddress;
ShortUrl.Utils.AddUrlToDatabase(oShortUrl);
oShortUrl.ShortenedUrl = ShortUrl.Utils.PublicShortUrl(oShortUrl.ShortenedUrl);
return oShortUrl;
}
}
// ShortUrl.ContainerクラスIは、サービスのエンドポイントとしてhttp://tap.tools.api.asmxを指すとVS2013の参照に名前を付けるためにサービス参照を追加oShortUrl
VS2013でnamespace ShortUrl
{
/// <summary>
/// Container for the ShortURL object
/// </summary>
public class Container
{
private string _real_url;
private string _short_url;
private DateTime _create_date;
private string _created_by;
public Container()
{
this.CreateDate = DateTime.Now;
this.CreatedBy = "tap";
this.RealUrl = null;
this.ShortenedUrl = "Unknown";
}
public string RealUrl
{
get { return _real_url; }
set { _real_url = value; }
}
public string ShortenedUrl
{
get { return _short_url; }
set { _short_url = value; }
}
public DateTime CreateDate
{
get { return _create_date; }
set { _create_date = value; }
}
public string CreatedBy
{
get { return _created_by; }
set { _created_by = value; }
}
}
}
として返さShortenUrlとして。 VS2013はAPISoapClientクラスとContainerクラスを生成します。
// get/set properties of the ShortUrl.Container class
// by means of APISoapClient
ShortenUrl.APISoapClient u = new ShortenUrl.APISoapClient();
u.CreateUrl("http://clintongallagher.com/tag-target-url.html");
// get/set properties of the ShortUrl.Container class
// by means of Container class
ShortenUrl.Container c = new ShortenUrl.Container();
string url = c.RealUrl;
私はどちらかとどこにも届かないと私は私の問題は、公共ShortUrl.Container CreateUrl(文字列real_url)メソッド内でインスタンス化oShortUrlオブジェクトのインスタンスであると思います。 oShortUrlのインスタンスからプロパティを取得する方法がわかりません。Containerクラスが自分のメソッドに戻ります。
// oShortUrl
ShortUrl.Container oShortUrl = new ShortUrl.Container();
それは同じくらい古い聞こえるかもしれ奇数と時代遅れASMXの使用は、私が-any- Webサービスで働いはまだありませんこれは私が苦手と裁判所の慈悲に身を投げる理由を説明しないことを起こります。
// EDIT:2016年7月19日〜2:41pm
VS2013は...インテリセンスに見られるように有用であると思われるそのうちの2つがWSDLから
//クラスAPISoapClientをいくつかのクラスを生成しましたクラスコンテナ
APISoapClientでローカル変数を使用すると、SQL Management Studioを使用して見ることができ、すべてのデータが正しく生成されているが、他のWebメソッドまたはデータを取得/設定するためのプロパティ...
// Exposes two WebMethods: CreateUrl and GetUrl
ShortenUrl.APISoapClient u = new ShortenUrl.APISoapClient();
// Does generate the shortened URL
u.CreateUrl("http://clintongallagher.com/tag-target-url.html");
// Should return the URL that was shortened but doesn't
u.GetUrl("i2Z5H");
そして...
// Exposes the properties in Intellisense but does not return data
ShortenUrl.Container c = new ShortenUrl.Container();
// returns 1/1/0001 12:00:00 AM
lblCreateDate.Text = "CreateDate: " + c.CreateDate.ToString();
// returns nothing
lblCreatedBy.Text = "CreatedBy: " + c.CreatedBy;
// returns nothing
lblRealUrl.Text = "RealUrl: " + c.RealUrl;
// returns ShortenUrl.Container
lblShortenedUrl.Text = "ShortenedUrl: " + u.GetUrl("i2Z5H");
サービス参照を追加すると、WSDLを表示できましたか? – yopez83
ちょっとyopez私は確かにしてwsdlを読むことができます。 VS2013は、api.disco、api.wsdl、configuration.svcinfoをマッピングするReference.svcmapを生成し、私はちょうど、configuration91.svcinfoという名前の別のインスタンスをすべてエディタで読むことができます。 – ClintonGallagher
ここにすべてのコードを書く必要はありません。あなたの問題を克服し、問題に直面しているコードを貼り付けるだけです。 – ABi