Я использую VisualStudio2013. Его важно отметить для читателей, что код, который этот asmx получен из работы отлично, но я не знаю, как использовать asmx WebService. Я загрузил все девять ярдов отсюда https://sourceforge.net/projects/shorturl-dotnet/C# Как получить/установить данные из веб-службы asmx
Я не могу понять, как получить/установить свойства следующего 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 возвращается как oShortUrl
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; }
}
}
}
В VS2013 я добавляю ссылки на службу, чтобы указать на http://tap.tools.api.asmx в качестве конечной точки службы и имя ссылки VS2013 как 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;
Я не получаю нигде либо, и я думаю, что моя проблема заключается в экземпляре объекта oShortUrl реализованного в рамках метода общественного ShortUrl.Container CreateUrl (строка real_url). Я не знаю, как получить какие-либо свойства из этого экземпляра oShortUrl, класс Container возвращается к моим методам.
// oShortUrl
ShortUrl.Container oShortUrl = new ShortUrl.Container();
Как ни странно это может звучать, как старые и устаревшие использование ASMX, случается, я никогда не работал с -Любые- WebServices пока что объясняет, почему я слаб и брошусь на милость суда.
// EDIT: 2016-07-19 ~ 2: 41pm
VS2013 генерируется несколько классов из WSDL два из которых кажутся полезными, как показано в Intellisense ...
// класс APISoapClient и класс Container
Когда я использую локальную переменную с APISoapClient, сокращенный URL-адрес генерируется, как я могу видеть, используя SQL Management Studio и отмечаю, что все данные правильно сгенерированы, но я не могу получить/установить на другие WebMethods или свойства для получения/установки данных ...
// 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
Hey yopez Я уверен, что сделал и могу прочитать wsdl. VS2013 генерирует Reference.svcmap, который отображает api.disco, api.wsdl, configuration.svcinfo и еще один экземпляр, который я только что наблюдал с именем configuration91.svcinfo, все из которых читаются в редакторе. – ClintonGallagher
Вам не нужно писать весь код здесь, просто укажите свой подход к преодолению вашей проблемы и вставьте код, в котором вы столкнулись с проблемами. – ABi