2

我有一个托管在 HostMySite.com 的 ASP.NET 网站,他们最近更改了共享帐户以在中等信任下运行。在我的网站中,我查询我的 Blogger 帐户并获取要在我的网站上显示的博客文章。

我正在使用 Google.GData.Client v1.4.0.2

检索在本地工作(并且一直工作到在 ISP 调用中等信任)。现在我收到以下错误:

[SecurityException: Request for the permission of type 'System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
   System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
   System.Security.CodeAccessPermission.Demand() +58
   System.Net.HttpWebRequest..ctor(Uri uri, ServicePoint servicePoint) +147
   System.Net.HttpRequestCreator.Create(Uri Uri) +26
   System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase) +216
   System.Net.WebRequest.Create(Uri requestUri) +31
   Google.GData.Client.GDataRequest.EnsureWebRequest() +77
   Google.GData.Client.GDataRequest.Execute() +42
   Google.GData.Client.Service.Query(Uri queryUri, DateTime ifModifiedSince, String etag, Int64& contentLength) +193
   Google.GData.Client.Service.Query(FeedQuery feedQuery) +202

我已经搜索了 Google 文档和在线但无法找到我需要更改的内容。

4

4 回答 4

1

一些主机会将默认信任级别设置为“中”(或类似于中的自定义信任级别),但允许它在您的 web.config 中被覆盖,如下所示:

<system.web>
    <trust level="Full" originUrl="" />
</system.web>

您是否尝试过覆盖它?

于 2010-09-22T23:10:51.330 回答
0

根据您想要使用的内容,您可以查看 Google AJAX Feed API,它是一个 javascript api,可让您将 rss 订阅源嵌入您的网站。

您将无法从服务器端访问它,它只会显示在用户浏览器中。

如果您试图让搜索引擎索引此内容,需要将其保存到数据库或以某种方式对其进行操作,那么此解决方案将不适合您。

Google Feed API 文档位于:

于 2010-11-30T15:00:37.397 回答
0

在中等信任度下,Web 应用程序无法打开远程 HTTP 连接。没有我知道的解决方法。您最好的选择是切换到另一个托管商,或者与您的托管商协商执行GoDaddy 所做的事情,他们已经放宽了 WebPermission 设置,特别是允许像您这样的场景,服务器应用程序必须从远程 HTTP 服务器(如谷歌)获取数据。

顺便说一句,我并不是说 GoDaddy 是一个出色的托管服务商——他们不是——但他们确实修改了他们的中等信任设置以解决您问题中提到的问题。如果像 GoDaddy 这样的低端主机愿意这样做,那么您也许可以以此为理由说服其他主机也这样做。

于 2009-10-08T03:32:18.520 回答
0

您只是检索博客文章吗?RSS 提要不能为您完成这项工作吗?这适用于我为客户做的 GoDaddy 网站。

记得导入命名空间(可能需要添加对项目的引用):

using System.ServiceModel.Syndication;

protected void Page_Load(object sender, EventArgs e)
    {

        XmlReader xmlReader = System.Xml.XmlReader.Create("URL to blog feed");

        SyndicationFeed feed = SyndicationFeed.Load(xmlReader);
        lstLatestNews.DataSource = feed.Items.Take(5);
        lstLatestNews.DataBind();
    }

在 ASPX 页面中:

<asp:ListView ID="lstLatestNews" runat="server">
        <LayoutTemplate>
            <ul id="latest_news">
                <li id="itemPlaceholder" runat="server"></li>
            </ul>
        </LayoutTemplate>
        <ItemTemplate>
            <li><a href="<%# Eval("Links[0].Uri.AbsoluteUri") %>"><%# Eval("Title.Text") %></a> <em><%# Convert.ToDateTime(Eval("PublishDate.DateTime")).ToString("g") %></em></li>
        </ItemTemplate>
    </asp:ListView>
于 2010-04-06T17:19:56.793 回答