我在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文档和在线但未能找到我需要更改的内容。
答案 0 :(得分:1)
某些主机会将默认信任级别设置为“中”(或类似于中等的自定义信任级别),但允许在web.config中覆盖它,如下所示:
<system.web>
<trust level="Full" originUrl="" />
</system.web>
你试过覆盖它吗?
答案 1 :(得分:0)
在中等信任下,网络应用无法打开远程HTTP连接。我没有意识到的解决方法。您最好的选择是切换到另一个主机,或者与您的主机进行协商以执行GoDaddy does他们放宽WebPermission设置的地方,特别是允许像您这样的sccenarios服务器应用必须从远程HTTP服务器获取数据谷歌的。
顺便说一句,我不是说GoDaddy是一个伟大的主机 - 他们不是 - 但他们确实修改了他们的中等信任设置来解决你问题中提到的问题。如果像GoDaddy这样的低端主机愿意这样做,那么你可以用这个作为一个论据来说服其他主持人这样做。答案 2 :(得分: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>
答案 3 :(得分:0)
根据您想要使用的内容,您可以查看Google AJAX Feed API,这是一个javascript api,可让您将rss源嵌入到您的网站中。
您将无法从服务器端访问它,它只会显示在用户浏览器中。
如果您尝试将此内容编入搜索引擎索引,需要将其保存到数据库或对其进行操作,以便该解决方案不适用于您。
Google Feed API文档位于: