2009-10-08 20 views
2

我有一个ASP.NET网站托管在HostMySite.com,他们最近更改了共享帐户以中等信任运行。在我的网站上,我查询了我的Blogger帐户并获取了要在我的网站上显示的博文。如何使用ASP.NET中等信任检索Google Blogger Feed?

我使用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文档并在线,但一直未能找出需要更改的内容。

回答

0

在中等信任下,Web应用程序无法打开远程HTTP连接。没有我知道的解决方法。您最好的选择是切换到另一个托管服务器,或与您的托管服务商协商做什么GoDaddy does专门放宽其WebPermission设置,以允许像您的服务器应用程序必须从远程HTTP服务器(如Google's)获取数据的sccenarios。

顺便说一句,我并不是说GoDaddy是一个伟大的托管商 - 他们不是 - 但他们确实修改了他们的中等信任设置来解决您的问题中提到的问题。而且如果像GoDaddy这样的低端主机愿意这样做,那么你可以用它来说服其他主机商也这样做。

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> 
1

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

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

您是否尝试覆盖它?

0

根据你想要使用这个,你可以看看谷歌的AJAX饲料API,这是一个javascript API,可以让你嵌入RSS饲料到您的网站。

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

如果您试图获取由搜索引擎编入索引的内容,需要将其保存到数据库或操作它,然后该解决方案将无法为您工作。

谷歌饲料API文档是在: