【问题标题】:ASP.NET Using Twitterizer in Medium TrustASP.NET 在中等信任中使用 Twitterizer
【发布时间】:2009-06-03 22:36:35
【问题描述】:

使用Twitterizer 框架的人是否有在中等信任环境中运行它的经验?我不断收到安全异常...

安全异常
说明: 应用程序试图执行 保安不允许的操作 政策。授予此申请 需要许可请联系 您的系统管理员或更改 应用程序的信任级别 配置文件。

异常详情: System.Security.SecurityException: 该组件不允许部分 受信任的呼叫者。

【问题讨论】:

    标签: asp.net medium-trust twitterizer


    【解决方案1】:

    我在 GoDaddy 上使用它,不得不寻找替代托管公司,折扣 asp.net...

    我很确定 Twitterizer 的问题在于您需要能够进行反射工作,以便程序集识别哪些操作是可能的。中等信任度不允许反射工作。

    【讨论】:

    • 是的,我在 Godaddy 上……所以没办法吧?
    • stackoverflow.com/questions/805255/… Jon 的建议还不错,但没有与 GoDaddy 合作,这就是我搬家的真正原因......
    • 除了具有相同易用性/功能的 twitterizer 之外,我还可以使用任何其他程序集吗?另外,是什么让某些东西在中等信任度下无法使用?
    • 我知道有些人已经能够通过 JSON 纯粹在客户端使用 Twitter 提要。
    • 我想做的就是每天在我的网站上发一篇文章。使用 twitterizer 非常简单......你还能想到其他方法吗?
    【解决方案2】:

    godaddy 没办法,看看他们在他们的网站上说了什么:

    What Is Medium trust level and how does it affect my hosting account?

    所以你只有两种方法:

    • 更改 Twitterizer 信任模式。

    或

    • 检查另一家托管公司。

    More about ASP.NET Trust Levels

    【讨论】:

    • 好的...那么这对我有什么影响?什么是中等信任阻止我使用 twitterizer? twitterizer 需要什么?
    • 如何更改 twitterizer 信任模式?
    • 它的反射...中等信任不允许反射工作。
    • 查看我在godaddy网站上发送的链接,您将详细了解中等信任度如何影响您的托管,但我不知道Twitterizer,我刚刚在另一个网站“KIGG”上遇到了同样的问题.
    • 您可以从 web.config 进行更改,但我认为这不会解决问题,因为某些 Twitterizer 代码将需要完全或高信任级别,并且无法在 Medium 中运行。就我而言,它是 dotnetopenId 库和使用 ADO.net 实体框架的特殊代码
    【解决方案3】:

    我正在修改和测试 Twitterizer 以在中等信任下工作,并将在我的 GoDaddy 主机上进行测试。

    如果您遇到具体问题,请不要犹豫,创建问题单或向我们的 Google 小组发送电子邮件。

    -瑞奇 (Twitterizer 库的所有者)

    【讨论】:

    • 实际上,我是在 google 群组中创建票证的人。我上次检查,你们真的修好了!
    • 嗯,不知何故,它得到了 UNfixed。我已经对其进行了重新修复,对其进行了测试,并发布了使其在中等信任环境中工作所需的设置。具体来说,将其添加到 内的 web.config 中:
    • 在邮件列表上联系我,了解更多信息。我所看到的一切都表明它有效,所以我希望得到一些帮助。
    【解决方案4】:

    它适用于 godaddy.com 标准 Windows 帐户。更易读的来源是here。

    Default.aspx:

    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb"
             Inherits="_Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="txtSendTweet" runat="server"
                         style="margin-bottom: 0px" Width="396px"></asp:TextBox>
            <br />
            <asp:Button ID="cmdSendTweet" runat="server" Text="Send Tweet" />
    
        </div>
        </form>
    </body>
    </html>
    

    后面的代码:

    Imports Twitterizer.Framework
    Imports System.Configuration
    Partial Class _Default
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim TwitterUserName As String = ConfigurationManager.AppSettings.Get("TwitterUserName")
            Dim TwitterPassWord As String = ConfigurationManager.AppSettings.Get("TwitterPassWord")
    
            Dim twit As Twitter = Nothing
            twit = New Twitter(TwitterUserName, TwitterPassWord, "Web")
            Dim followers As TwitterUserCollection = twit.User.Followers()
    
            For Each follower As TwitterUser In followers
                Response.Write(follower.ScreenName.ToString())
                Response.Write(follower.Status.Text.ToString())
                Response.Write(follower.NumberOfFollowers.ToString())
            Next
            Dim paras As New TwitterParameters()
            paras.Add(TwitterParameterNames.ScreenName, "Twit_er_izer")
            paras.Add(TwitterParameterNames.Since, Convert.ToDateTime("1/1/2009"))
            paras.Add(TwitterParameterNames.Page, 1)
            paras.Add(TwitterParameterNames.Count, 5)
            paras.Add(TwitterParameterNames.SinceID, 1)
    
            Dim usersStatus As TwitterStatusCollection = twit.Status.UserTimeline(paras)
    
            Response.Write("Other User")
            For Each status As TwitterStatus In usersStatus
                Response.Write(String.Format("User {0}: {1}", status.TwitterUser.ScreenName, status.Text))
                Response.Write("<br><p>")
            Next
    
    
        End Sub
        Protected Sub cmdSendTweet_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSendTweet.Click
            Dim TwitterUserName As String = ConfigurationManager.AppSettings.Get("TwitterUserName")
            Dim TwitterPassWord As String = ConfigurationManager.AppSettings.Get("TwitterPassWord")
            Dim TwitterMessage As String = txtSendTweet.Text
            Dim t As New Twitterizer.Framework.Twitter(TwitterUserName, TwitterPassWord)
            t.Status.Update(txtSendTweet.Text)
            Dispose()
        End Sub
    End Class
    

    Web.config:

    <?xml version="1.0"?>
    <!-- 
        Note: As an alternative to hand editing this file you can use the 
        web admin tool to configure settings for your application. Use
        the Website->Asp.Net Configuration option in Visual Studio.
        A full list of settings and comments can be found in 
        machine.config.comments usually located in 
        \Windows\Microsoft.Net\Framework\v2.x\Config 
    -->
    <configuration>
     <configSections>
      <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
       <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
         <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
         <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
         <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
         <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
        </sectionGroup>
       </sectionGroup>
      </sectionGroup>
     </configSections>
     <appSettings>
      <add key="TwitterUserName" value="thesupermedia" />
      <add key="TwitterPassWord" value="yourpassword" />
     </appSettings>
     <connectionStrings/>
     <system.web>
      <!-- 
                Set compilation debug="true" to insert debugging 
                symbols into the compiled page. Because this 
                affects performance, set this value to true only 
                during development.
    
                Visual Basic options:
                Set strict="true" to disallow all data type conversions 
                where data loss can occur. 
                Set explicit="true" to force declaration of all variables.
            -->
      <authentication mode="Forms" />
      <customErrors defaultRedirect="" />
      <compilation debug="false" strict="false" explicit="true">
       <assemblies>
        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
       </assemblies>
      </compilation>
      <pages>
       <namespaces>
        <clear/>
        <add namespace="System"/>
        <add namespace="System.Collections"/>
        <add namespace="System.Collections.Generic"/>
        <add namespace="System.Collections.Specialized"/>
        <add namespace="System.Configuration"/>
        <add namespace="System.Text"/>
        <add namespace="System.Text.RegularExpressions"/>
        <add namespace="System.Linq"/>
        <add namespace="System.Xml.Linq"/>
        <add namespace="System.Web"/>
        <add namespace="System.Web.Caching"/>
        <add namespace="System.Web.SessionState"/>
        <add namespace="System.Web.Security"/>
        <add namespace="System.Web.Profile"/>
        <add namespace="System.Web.UI"/>
        <add namespace="System.Web.UI.WebControls"/>
        <add namespace="System.Web.UI.WebControls.WebParts"/>
        <add namespace="System.Web.UI.HtmlControls"/>
       </namespaces>
       <controls>
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
       </controls>
      </pages>
      <!--
                The <authentication> section enables configuration 
                of the security authentication mode used by 
                ASP.NET to identify an incoming user. 
           <authentication mode="Windows"/>
            -->
    
      <!--
                The <customErrors> section enables configuration 
                of what to do if/when an unhandled error occurs 
                during the execution of a request. Specifically, 
                it enables developers to configure html error pages 
                to be displayed in place of a error stack trace.
    
            <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->
      <httpHandlers>
       <remove verb="*" path="*.asmx"/>
       <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
       <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
       <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
      </httpHandlers>
      <httpModules>
       <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </httpModules>
     </system.web>
     <system.codedom>
      <compilers>
       <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <providerOption name="CompilerVersion" value="v3.5"/>
        <providerOption name="WarnAsError" value="false"/>
       </compiler>
       <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <providerOption name="CompilerVersion" value="v3.5"/>
        <providerOption name="OptionInfer" value="true"/>
        <providerOption name="WarnAsError" value="false"/>
       </compiler>
      </compilers>
     </system.codedom>
     <!-- 
            The system.webServer section is required for running ASP.NET AJAX under Internet
            Information Services 7.0.  It is not necessary for previous version of IIS.
        -->
     <system.webServer>
      <validation validateIntegratedModeConfiguration="false"/>
      <modules>
       <remove name="ScriptModule"/>
       <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </modules>
      <handlers>
       <remove name="WebServiceHandlerFactory-Integrated"/>
       <remove name="ScriptHandlerFactory"/>
       <remove name="ScriptHandlerFactoryAppServices"/>
       <remove name="ScriptResource"/>
       <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
       <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
       <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </handlers>
     </system.webServer>
     <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
        <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
       </dependentAssembly>
       <dependentAssembly>
        <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
       </dependentAssembly>
      </assemblyBinding>
     </runtime>
    </configuration>
    

    【讨论】:

      猜你喜欢
      • 2012-06-18
      • 2010-09-13
      • 2010-11-22
      • 2011-04-06
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      相关资源
      最近更新 更多