我正在尝试在F#wep api项目中托管一个openid连接身份服务器,我正在使用F#MVC模板和身份服务器的预发布包
当我创建任何基于Katana的web api项目并随后添加thinktecture.identityserver.v3包时,编译在该行失败
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver <- Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
Run Code Online (Sandbox Code Playgroud)
带有错误"此类型没有可访问的对象构造函数",并带有CamelCasePropertyNamesContractResolver下划线
那时我没有改变任何代码 - 只是添加了包
我安装了vsix的v1.13,这在VS2013和2015预览中都会发生
我不确定这是模板的问题,我添加的包还是f#一般? - 非常感谢任何有关如何诊断或在何处报告的指示
如果我手动添加对标识服务器程序集的引用但是在添加其他nuget包时无法复制 - 同样会发生这种情况 - 如何添加引用以某种方式掩盖newtonsoft类型的构造函数?
它似乎只影响该类型 - 如果我注释掉代码编译的那一行
startup.fs的完整列表
namespace FSharpWeb1
open Owin
open Microsoft.Owin
open System
open System.Net.Http
open System.Web
open System.Web.Http
open System.Web.Http.Owin
[<Sealed>]
type Startup() =
static member RegisterWebApi(config: HttpConfiguration) =
// Configure routing
config.MapHttpAttributeRoutes()
// Configure serialization
config.Formatters.XmlFormatter.UseXmlSerializer <- true
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver <- Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
// Additional Web API settings
member __.Configuration(builder: IAppBuilder) =
let config = new HttpConfiguration() …Run Code Online (Sandbox Code Playgroud) Brock Allen上周发布了IdentityManager的新测试版.安全模型有很多变化,因此配置也发生了变化.
他甚至拍摄了一些关于如何正确配置新版本的视频(设置ASP.NET身份和安全性以及IdentityManager).这些很好地解释了经典ASP.NET MVC应用程序中的用法,以及ADFS设置,但我找不到任何有关如何使其与Identity Server v3并行工作的帮助或示例代码.
您能否在IdSrv3的帮助下分享您配置IdMgr远程访问的经验?
asp.net thinktecture-ident-server asp.net-identity thinktecture identityserver3
我有这个界面:
interface IParameters {
form: number;
field: string;
...
}
Run Code Online (Sandbox Code Playgroud)
我希望form属性为数字或函数,并field为字符串或函数。
我尝试这样的事情:
interface IParameters {
form: number | Function;
field: string | Function;
...
}
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为在我的代码中,我像这样使用变量:
var form = (typeof _oParameters.form === "function" ? _oParameters.form() : _oParameters.form);
var field = (typeof _oParameters.field === "function" ? _oParameters.field() : _oParameters.field);
Run Code Online (Sandbox Code Playgroud)
我不想在我的所有代码中将此变量从字符串/数字更改为默认函数,并防止将此变量设置为其他类型。
但是如果我尝试调用这两个变量之一,例如:
var param:IParameters;
param.form();
...
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
无法调用类型缺少调用签名的表达式。
但是param.form = 12;有效。
我发现的唯一的解决办法是声明form和field对any类型。
是否有其他方法来定义没有any类型的变量?
我尝试将 RDLC 报告渲染为 PDF 文件,生成的文件大小比正常文件大。经过一番研究,我发现生成的 PDF 嵌入了字体:..... 9 0 obj << /Filter /FlateDecode /Length 52986 /Length1 194264 >> 流 .....
当我使用相同的方法和相同的代码生成 PDF 并保存到磁盘时,一个 PDF 的大小为:6.82 KB,其他 109 KB。
如果我用 Adobe Acrobat 打开,PDF 是一样的。
解决方案一:
我使用“Microsoft.ReportViewer.WebForms”版本 11 在 MVC 4 应用程序中生成 PDF。我尝试在同一 MVC 应用程序中使用“Microsoft.ReportViewer.WinForms”库来查看大小是否减小但没有结果。
失败的
解决方案2:
我用记事本在 RDLC 文件中搜索是否存在有关字体的内容但不存在,仅搜索字体大小,如果是粗体但不存在某些名称。
失败的
小 PDF 字体属性:

大 PDF 字体属性:

我的问题是:如何不在 RDLC 渲染的 PDF 中嵌入默认字体?
我正在使用此代码处理文件上传到web api:
[HttpPost]
public async Task<IHttpActionResult> Post(string provider)
{
if (!Request.Content.IsMimeMultipartContent())
throw new Exception();
var streamProvider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(streamProvider); // FAILS HERE
foreach (var file in streamProvider.Contents)
{
var imageFilename = file.Headers.ContentDisposition.FileName.Trim('\"');
var imageStream = await file.ReadAsStreamAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
但它在这里抛出一个错误: await Request.Content.ReadAsMultipartAsync(streamProvider);
错误是:读取MIME多部分正文部分时出错.内部异常是:
{"Cannot access a disposed object."}
Run Code Online (Sandbox Code Playgroud)
关于为什么会出现这个错误的任何想法?
asp.net-mvc ×2
.net ×1
asp.net ×1
f# ×1
fonts ×1
function ×1
pdf ×1
rdlc ×1
thinktecture ×1
types ×1
typescript ×1
winforms ×1