小编Rog*_*ger的帖子

System.Web.Providers不适用于中等信任

我有一个使用Microsoft ASP.NET Universal Providers(NuGet)的ASP.NET WebForms应用程序用于成员资格和角色.在完全信任下一切正常,但是当我编辑web.config以指定中等信任时,我在加载访问成员资格的页面时遇到此错误:

类型"System.Web.Providers.DefaultMembershipProvider"无法在部分受信任的安全策略下实例化(目标程序集中不存在AllowPartiallyTrustedCallersAttribute).

我在网上搜索过,并没有找到关于这是否是已知限制或是否有解决方法的更多信息.我正在研究开源应用程序Gallery Server Pro,它分布在MS Web Gallery中,必须支持中等信任环境.

任何见解?

[编辑]根据请求,这是web.config的东西(我没有使用配置文件或会话状态提供程序):

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <clear />
    <add name="DefaultMembershipProvider" applicationName="Gallery Server Pro" connectionStringName="GalleryDb" passwordFormat="Clear" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="50" minRequiredPasswordLength="2" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</membership>
<roleManager enabled="true" cacheRolesInCookie="true" cookieProtection="Validation" defaultProvider="DefaultRoleProvider">
  <providers>
    <clear />
    <add name="DefaultRoleProvider" applicationName="Gallery Server Pro" connectionStringName="GalleryDb" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-membership medium-trust

8
推荐指数
1
解决办法
393
查看次数

保留内联tinyMCE中的超链接导航

我有一个内联tinyMCE编辑器,HTML文本可能包含超链接.如果用户单击超链接,我希望他们转到URL.如果他们点击其他地方,我想进入编辑模式.

HTML:

<div id="tinymce">
  <p>User should be able to <a id="mylink" href="http://google.com">navigate to a link</a> and also edit the text by clicking outside the link.</p>
</div>
Run Code Online (Sandbox Code Playgroud)

剧本:

tinymce.init({
  selector: '#tinymce',
  inline: true
});

$('#mylink').on('click', function(e) {
  // This never fires
  console.log('Link clicked...');
});
Run Code Online (Sandbox Code Playgroud)

jsfiddle:http://jsfiddle.net/rdog33/uLhdq447/

正如您所看到的,我有一个想法可以挂钩超链接的click事件,并使用window.location.href手动发送用户,但事件不会触发.如果我取消注释初始化,它触发,所以很明显,tinymce会以某种方式干扰.

有任何想法吗?

javascript tinymce tinymce-4

4
推荐指数
1
解决办法
1013
查看次数

数据层中的异步是否要求整个调用堆栈也是异步的?

目前,数据层与数据库异步交互是很常见的:

public async Task<Customer> GetCustomer(int id)
{
  using (db = new AppDbContext())
  {
    return await db.Customers.FindAsync(id);
  }
}
Run Code Online (Sandbox Code Playgroud)

有了这种技术,我的理解是所有调用方法,一直到UI层,然后也必须使用async关键字定义.因此,您最终会得到一个应用程序,其中最终与DB交互的每个方法或函数都是异步方法.

这看起来非常混乱,并且在了解数据层内部的实现细节的情况下"污染"所有应用程序层.

我误解了什么,或者这只是一个人必须做的事情?

.net c# architecture asynchronous async-await

4
推荐指数
1
解决办法
348
查看次数

如何使用.NET Core解析类库中的DI类?

我了解 .NET Core 中 DI 的基础知识,但我无法弄清楚如何在多个项目中使用它。想象一下我正在 ASP.NET Core 的 Startup 类中设置数据库上下文:

public void ConfigureServices(IServiceCollection services)
{
  services.AddDbContext<GalleryDb>();
}
Run Code Online (Sandbox Code Playgroud)

我知道如何在 API 控制器中访问该上下文:

public class AlbumController : Microsoft.AspNetCore.Mvc.Controller
{
  private GalleryDb _ctx;

  public AlbumController(GalleryDb ctx)
  {
    _ctx = ctx;
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,当 API 控制器和数据访问类之间有很多层和函数时该怎么办呢?最终代码到达我的存储库类,这是实际需要上下文的类。它看起来像这样:

public class AlbumRepository
{
  private GalleryDb _ctx;
  public AlbumRepository(GalleryDb ctx)
  {
    _ctx = ctx;
  }

  public void Save(AlbumEntity entity)
  {
    // Use _ctx to persist to DB.
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以从 API 入口点一直向下传递上下文,但这似乎是一种反模式,因为这意味着将它作为参数传递给多个对此不感兴趣的类和函数。

相反,我想在调用存储库类时执行类似的操作:

public void Save(AlbumEntity album)
{ …
Run Code Online (Sandbox Code Playgroud)

dependency-injection .net-core asp.net-core asp.net-core-2.0

4
推荐指数
1
解决办法
5572
查看次数

对标记为ASCII的EXIF属性使用UTF8解码是否安全?

我收到了带有EXIF ImageDescription元数据的图像文件,其值为"Test accents:éâäàè".当使用.NET GDI +类提取此数据时,它会报告它以ASCII格式存储,但在使用ASCII解码器时会获得垃圾数据.通过反复试验,我发现我可以使用UTF8解码器正确提取它.

这是示例代码:

public string GetDescription()
{
  const string filePath = @"C:\test_image.jpg";

  using (var bmp = new System.Drawing.Bitmap(filePath))
  {
    var propItem = bmp.PropertyItems.FirstOrDefault(p => p.Id == 270); // EXIF ImageDescription

    if (propItem == null)
      return null;

    string value = null;

    if (propItem.Type == 2) // ASCII
    {
      // Does not work: Returns "Test accents: ??????????"
      var asciiEnc = new System.Text.ASCIIEncoding();
      value = asciiEnc.GetString(propItem.Value, 0, propItem.Value.Length - 1);

      // CORRECT: Returns "Test accents: éâäàè"
      var utf8Enc = new …
Run Code Online (Sandbox Code Playgroud)

.net c# gdi+ exif

1
推荐指数
1
解决办法
754
查看次数

jQuery没有定义

我正在为许多人使用的ASP.NET Web应用程序编写一个javascript文件.这个文件将使用jQuery,所以为了确保我可以安全地使用$ alias,文件的结构如下:

(function ($) {
  // My javascript here can safely use the $ alias
})(jquery);
Run Code Online (Sandbox Code Playgroud)

但是,我的Firebug控制台显示错误"jQuery未定义".我确保此文件的脚本标记位于jQuery的脚本标记之后,但很明显,此脚本在jQuery准备好之前运行.

在jQuery准备好之后,如何确保脚本运行?

jquery

0
推荐指数
1
解决办法
338
查看次数