web-dev-qa-db-ja.com

新しいVS2013 Asp.netテンプレートでSystem.Security.Permissions.ReflectionPermissionの使用を無効にし、共有ホスティングで機能するようにする方法

デフォルトのMVCテンプレートから新しいVisual Studio 2013 ASp.net MVCアプリケーションを作成しました。しかし、エラーメッセージ「タイプSystem.Security.Permissions.ReflectionPermissionのアクセス許可の要求に失敗しました。

このリフレクション許可をオフにして、サイトが引き続き機能するようにすることは可能ですか?

ここに私のweb.configがあります

_<?xml version="1.0" encoding="utf-8"?>
    <!--
    For more information on how to configure your ASP.NET application, please visit
    http://go.Microsoft.com/fwlink/?LinkId=301880
    -->
    <configuration>
    <configSections>

      <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      <!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 -->
    </configSections>
    <connectionStrings>
      <add name="MyDb" connectionString="Data Source=x.x.com;Initial Catalog=x;User Id=x;Password=x;" providerName="System.Data.SqlClient" />
    </connectionStrings>
    <appSettings>
      <add key="webpages:Version" value="3.0.0.0" />
      <add key="webpages:Enabled" value="false" />
      <add key="ClientValidationEnabled" value="true" />
      <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    <system.web>
    <trust level="Full" />
      <customErrors mode="Off"/>
      <authentication mode="None" />
      <compilation targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
    </system.web>
    <system.webServer>
      <modules>
        <remove name="FormsAuthenticationModule" />
      </modules>
    </system.webServer>
    <runtime>
      <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    <entityFramework>
      <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
        <parameters>
          <parameter value="v11.0" />
        </parameters>
      </defaultConnectionFactory>
      <providers>
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      </providers>
    </entityFramework>
    </configuration>
_

例外の詳細:System.Security.SecurityException: 'System.Security.Permissions.ReflectionPermission、mscorlib、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089'の種類のアクセス許可の要求に失敗しました。

[SecurityException:タイプ> 'System.Security.Permissions.ReflectionPermission、mscorlib、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089'の権限のリクエストに失敗しました。] System.Delegate.DelegateConstruct(オブジェクトターゲット、IntPtrスロット) +0 Owin.Loader.DefaultLoader..ctor(Func _3 next, Func_ 2アクティベーター、IEnumerable1 referencedAssemblies) +69 Microsoft.Owin.Host.SystemWeb.OwinBuilder.GetAppStartup() +65 Microsoft.Owin.Host.SystemWeb.OwinHttpModule.InitializeBlueprint() +28 System.Threading.LazyInitializer.EnsureInitializedCore(T& target, Boolean& initialized, Object& syncLock, Func 1 valueFactory)+115 Microsoft.Owin.Host.SystemWeb.OwinHttpModule.Init(HttpApplication context)+106 System.Web。 HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext、HttpContext context、MethodInfo [] handlers)+418 System.Web.HttpApplication.InitSpecial(HttpApplicationState state、MethodInfo [] handlers、IntPtr appContext、HttpContext context)+172 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext、HttpContext context)+336 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+296

追加しようとした

_<trust level="Full" />
_

私のWeb.Config system.Webセクションに追加しましたが、

この構成セクションは、このパスでは使用できません。これは、サイト管理者が継承された構成ファイルからこのセクションへのアクセスをロックしている場合に発生します。

1and1.comで共有ホスティングされているため、完全な信頼を得ることができません。

15
greay

私はasp.netチームに直接尋ねましたが、これは彼らの回答でした

昨年、アプリケーションの分離を目的として部分的な信頼が信頼境界ではなくなったことを正式に発表しました( http://support.Microsoft.com/kb/2698981 )そのため、共有ホスティングへの推奨事項プロバイダーはそれをもう使用しないことです。このため、今後開発する新しいフレームワーク機能の部分的な信頼をサポートしません。

私は共有ホスティングを使用している多くの人々を知っています。ホストプロバイダーは共有ホスティング製品に完全な信頼を与えないので、MicrosoftがAzureでより多くのクライアントを獲得できるようにこの決定を下したと思います。

窮地にある共有ホスティングでクライアントを売っている小さな開発者を私たちに入れます。より高価なホスティングに行くか、Azureにジャンプします。

11
greay

http://www.codeproject.com/Questions/586223/SecurityplusExceptionpluscomingplusinplusaplusrunn

ソリューション4 System.Security.SecurityException:タイプ 'System.Net.SocketPermission、System、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089'の権限のリクエストに失敗しました

上記のエラーの解決策

<system.web>
    <customErrors mode="Off"/>
    <trust level="Full" />
</system.web>

私のゴーダディホスティングのために働く

40
rafaellorey

Microsoft.Owin.Host.SystemWebパッケージでは、部分的な信頼はサポートされていません。これは、実行を支援するパッケージです OWINミドルウェアIIS統合パイプライン 。このアセンブリは、リフレクションを実行してOWINスタートアップクラスを検出およびロードします。これをオフにするには、 appSettingですが、残念ながらOWINミドルウェアは、スタートアップの検出が無効になっているため機能しません。

2
Praburaj

次の条件がある場合:

1)必須のセキュリティ要件のため、信頼レベル「中」以下を使用する必要があります。

2)ASP.Net 4.5の使用

3)Owinを使用して、GoogleやFacebookなどの外部認証プロバイダーを許可する必要はありません。

4)アプリケーションエラー情報は、Owinがアプリケーションを中程度の信頼で起動できないようにしていることを示しています。

次の行をweb.config AppSettingsセクションに追加してOwinを無効にすると、プログラムを中程度の信頼レベルで実行できるようになります。

<add key="owin:AutomaticAppStartup" value="false" />
2
WWC

GoDaddy Pleskの7.2.xでは、セキュリティの問題がありました。

私の解決策は、customErrorsの下の信頼レベルを手動でweb.configに追加することでした(これを追加するためにgodaddyダッシュボードを使用する場合は、サイトの上位ルートではなく、umbracoディレクトリに固有のものになります)。

0
Rajiv R. Pandey