【问题标题】:C# WebServices Lists.GetCollection returns Status HTTP 404: Not Found on a subpageC# WebServices Lists.GetCollection 返回状态 HTTP 404:未在子页面上找到
【发布时间】:2011-06-16 11:08:55
【问题描述】:

更新: 当我尝试从以下 url 获取集合时有一点更新: lista.Url = @"http://website/Page1/Page2/_vti_bin/Lists.asmx"; 我得到了集合,我可以看到列表。 其余部分: WebReferenceTest/Lists/ListTest/ 已由我创建,即 WebReferenceTest。也许我搞砸了对该页面的权限等。 也许这会对问题有所了解。

嗨, 我是网络服务的新手, 我一直在尝试做一个简单的应用程序来获取项目并将其添加到通过 AddWebReference 存储在 Sharepoint 服务器上的特定列表中。 我一直在关注这件事上的几个线程/howtos/文章,但我已经到了不知道我做错了什么的地步,或者服务器必须有一些特定的设置。 我正在使用 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:未找到”,但是当我将更改后的 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>

感谢您的任何意见。 帕维尔

【问题讨论】:

  • 确保您对子站点具有相同的权限。另外,我假设两者都在同一个端口上的同一个域 localhost 下?

标签: c# web-services sharepoint http-status-code-404


【解决方案1】:

当您使用@"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。

【讨论】:

  • 您好,非常感谢,它有帮助。我只是使用错误的页面在 lista.url 属性中查找我的列表。再次感谢您的快速回答。
猜你喜欢
  • 2020-03-03
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 2019-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多