我有一个使用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) 我有一个内联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会以某种方式干扰.
有任何想法吗?
目前,数据层与数据库异步交互是很常见的:
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 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
我收到了带有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) 我正在为许多人使用的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准备好之后,如何确保脚本运行?
.net ×2
c# ×2
.net-core ×1
architecture ×1
asp.net ×1
asp.net-core ×1
async-await ×1
asynchronous ×1
exif ×1
gdi+ ×1
javascript ×1
jquery ×1
medium-trust ×1
tinymce ×1
tinymce-4 ×1