Test/Validate WSDL

http://xmethods.net/ve2/Tools.po
http://www.validwsdl.com/

Оба сервиса хороши, предоставляют подробную информацию о тестируемом веб-сервисе
Второй позволяет вызывать методы сервиса

Failed to generate code for the service reference WSDL

Failed to generate code for the service reference
Style Document inferred from messages in operation does not match expected style Rpc spedfied via bindings

Данную ошибку исправить на самом деле просто:
1. Добавить сервис в проект
2. Ребилдить и словить ошибку
3. Закрыть студию
4. Открыть проект вновь
5. Сбилдить

Если такой вариант не сработал, то рекомендую, при возможности, удалить все референсы на веб-сервисы и добавить их заново

Также можно использовать svcutil.exe

+:
http://social.msdn.microsoft.com/Forums/en/wcf/thread/fab01c1a-11e7-4b7c-8b27-e5e9732fd22b

This web service uses the rpx/literal pattern which is not supprted in .Net in all cases. In particular "part" elements in the wsdl should have "type" attribute and not "element". It might be possible to do hard work and fix this wsdl but it can take time.

I suggest you will get a sample request soap message (either from the servie author or from a python client) and use .Net to send raw http messages based on this sample.

C# System.Windows.Forms.WebBrowser

WebBrowser - Windows Forms компонета, позволяющая пользователям перемещаться по вебстраницам в форме приложения

Описания базовых свойств и методов можно прочитать в официальной документации


Каким образом отследить HTTP ошибки

Для этого в проект необходимо добавить библиотеку "Microsoft Internet Contols" (Add Reference -> COM), после чего написать следующий код:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void Form1_Load(object sender, EventArgs e)
{
    //InitWebBrowser();
    webBrowser.Navigate("http://m.bing.com/");
    var axBrowser = (SHDocVw.WebBrowser)this.webBrowser.ActiveXInstance;
    axBrowser.NavigateError += new SHDocVw.DWebBrowserEvents2_NavigateErrorEventHandler(axBrowser_NavigateError);
}
 
void axBrowser_NavigateError(object pDisp, ref object URL, ref object Frame, ref object StatusCode, ref bool Cancel)
{
    if (StatusCode.ToString() == "404")
    {
        MessageBox.Show("Page no found");
    }
}



Почему событие DocumentCompleted вызывается несколько раз и как этого избежать?

Это происходит по той причине, что событие DocumentComplete вызывается каждый раз для отдельного фрейма (frame). Таким образом, для корректной работы необходимо добавить дополнительные проверки:
?
1
2
3
4
5
6
7
8
void BrowserDocumentCompleted(object sender,
        WebBrowserDocumentCompletedEventArgs e)
{
  if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
    return;
 
  //The page is finished loading
}



Еще один способ рассмотрен дальше.

Как дождаться загрузки страницы полностью?

Более эффективным вариантом дождаться полного окончания загрузки страницы является вариант с использованием свойства ReadyState:
?
1
2
3
4
5
6
7
webBrowser.Navigate("http:///google.com");
webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
 
while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
    Application.DoEvents();
}



Как сделать скриншот веб-страницы программно?

Для этого есть метод DrawToBitmap:
?
1
2
3
4
5
6
7
8
9
void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    WebBrowser webBrowser = (WebBrowser)sender;
    webBrowser.ClientSize = new Size(1024, 800);
    webBrowser.ScrollBarsEnabled = false;
    Bitmap image = new Bitmap(webBrowser.Bounds.Width, webBrowser.Bounds.Height);
    webBrowser.BringToFront();
    webBrowser.DrawToBitmap(image, webBrowser.Bounds);
}
Вы не сможете сделать скриншот тех участков веб-страницы, где используется Flash или Silverlight.
На эту тему есть целый проект:http://screenshotsextractor.codeplex.com/

Первоисточник и прочие полезности: http://msug.vn.ua/Posts/Details/3769