C # WebServices Lists.GetCollection возвращает статус HTTP 404: не найден на подстранице - PullRequest
0 голосов
/ 27 января 2011

UPDATE : Небольшое обновление, когда я пытаюсь получить коллекцию из следующего URL: lista.Url = @ "http://website/Page1/Page2/_vti_bin/Lists.asmx"; Я получаю коллекцию и вижу списки. остаток: WebReferenceTest / Lists / ListTest / был создан моим, то есть WebReferenceTest. Возможно, я что-то напутал с правами на эту страницу и т. Д. Возможно, это поможет пролить свет на проблему.

Привет, Я новичок в веб-сервисах, Я пытался сделать простое приложение, чтобы получить и добавить элементы в определенный список, хранящийся на сервере Sharepoint через AddWebReference. Я следил за несколькими темами / инструкциями / статьями по этому вопросу, но я достиг точки, когда я не знаю, делаю ли я что-то не так, или на сервере должны быть какие-то особые настройки. Я использую Visual Studio 2005.

Код выглядит следующим образом:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            listTest.Lists lista = new listTest.Lists();
            lista.Url = @"http://website/Page1/Page2/WebReferenceTest/Lists/ListTest/_vti_bin/Lists.asmx";
            lista.Credentials = System.Net.CredentialCache.DefaultCredentials;             

            System.Xml.XmlNode activeItemData = lista.GetListCollection();

            foreach (System.Xml.XmlNode listItem in activeItemData)
            { 
               textBox1.AppendText(listItem.OuterXml + Environment.NewLine);
            }
        }
        catch (System.Web.Services.Protocols.SoapException E)
        {
            MessageBox.Show(E.Detail.InnerText);
        }
    }

}

Когда я запускаю этот код как есть, я получаю «HTTP 404: Not Found», но когда я комментирую измененный URL-адрес, возвращающийся к основному адресу, я получаю коллекцию списков на главной странице, или что-то в этом роде.

Я могу получить доступ к этой странице в веб-браузере, но в VS2005 я получу ошибку 404.

Так что вопрос в том, что я делаю что-то неловкое, или сервер требует дополнительной настройки. У меня нет доступа к этому, но я думаю, что я могу сделать это кем-то другим.

PS: app.config выглядит так:

    <?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="WindowsApplication2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <applicationSettings>
        <WindowsApplication2.Properties.Settings>
            <setting name="WindowsApplication2_listTest_Lists" serializeAs="String">
                <value>http://website/_vti_bin/lists.asmx</value>
            </setting>
        </WindowsApplication2.Properties.Settings>
    </applicationSettings>
</configuration>

Спасибо за любой вклад. Pawel

1 Ответ

1 голос
/ 27 января 2011

Когда вы вызываете функцию с помощью @"http://website/Page1/Page2/_vti_bin/Lists.asmx Это займет внутренний путь до @"http://website/_vti_bin/Lists.asmx.

Поэтому всегда указывайте путь к вашему сайту или RootSiteCollection.

Просто измените ваш кодниже:

lista.Url = @"http://website/_vti_bin/Lists.asmx";

Вы можете получить доступ ко всем функциям, вызвав @"http://website/Page1/Page2/_vti_bin/Lists.asmx url в браузере.Но нажмите ссылку Описание услуги, чем вы увидите, что именно я хочу вам сообщить.Это даст вам ту же ошибку 404.Как только вы получите это, попробуйте удалить 'Page1/Page2' и снова нажмите Enter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...