小编Gra*_*zer的帖子

WebAPI OData错误ObjectContent类型无法序列化内容类型'application/json ...'的响应正文

这个是杀了我.这里的文章和网络都没有帮助.

首先,我正在使用.Net 4.5开发ASP.Net WebForms(非MVC).我发现了一篇很棒的文章,可以帮助您向WebForms站点添加OData源.它像一个冠军一样工作.我能够创建一个EMPTY Web应用程序并使其工作.但是,我注意到它没有使用EntitySetController我通过本文创建的最新(并且据说更容易).两者都分开工作.然后我按摩原始文章,看看它是否可以处理它EntitySetController,它可以.使用Fiddler建议测试OData及其过滤.哦,快乐的一天.

我的下一步是将它添加到我现有的ASP.Net 4.5 WebForms应用程序中.有点工作了.一切都编译,我可以打电话locallhost:55777/kid,它Products按预期返回:

<workspace>
  <atom:title type="text">Default</atom:title>
  <collection href="Products">
    <atom:title type="text">Products</atom:title>
  </collection>
</workspace>
Run Code Online (Sandbox Code Playgroud)

然后,我尝试GetGetEntityByKey方法,他们运行并回馈他们应该做的.但是,我收到以下错误消息:

{
  "odata.error":{
    "code":"","message":{
      "lang":"en-US","value":"An error has occurred."
    },
    "innererror":{
      "message":"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; odata=minimalmetadata; streaming=true; charset=utf-8'.",
      "type":"System.InvalidOperationException",
      "stacktrace":"",
      "internalexception":{
        "message":"No IdLink factory was found. Try calling HasIdLink on the EntitySetConfiguration for 'Products'.",
        "type":"System.InvalidOperationException",
        "stacktrace":"   at …
Run Code Online (Sandbox Code Playgroud)

c# asp.net odata asp.net-web-api

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

升级到EF 6(RTM) - 获取System.Data.Entity.Core.Objects.ObjectContext不能用于返回类型System.Data.Objects

刚刚升级了.NET 4.5 WCF服务,该服务还有一个使用EF 6的OData服务.OData服务当然在升级之前工作.现在,当尝试查询OData服务或甚至只是从Visual Studio 2012浏览它时,我收到以下请求错误:

服务器遇到处理请求的错误.异常消息是'表达式类型'System.Data.Entity.Core.Objects.ObjectContext'不能用于返回类型'System.Data.Objects.ObjectContext''.请参阅服务器日志以获取更多详

异常堆栈跟踪是:

at System.Linq.Expressions.Expression.ValidateLambdaArgs(Type delegateType, Expression& body, ReadOnlyCollection`1 parameters)
at System.Linq.Expressions.Expression.Lambda[TDelegate](Expression body, String name, Boolean tailCall, IEnumerable`1 parameters)
at System.Data.Services.Providers.DbContextHelper.CreateDbContextAccessor(Type type)
at System.Data.Services.Providers.DbContextHelper.GetDbContextAccessor(Type type)
at System.Data.Services.DataService`1.CreateMetadataAndQueryProviders(IDataServiceMetadataProvider& metadataProviderInstance, IDataServiceQueryProvider& queryProviderInstance, Object& dataSourceInstance, Boolean& isInternallyCreatedProvider)
at System.Data.Services.DataService`1.CreateProvider()
at System.Data.Services.DataService`1.HandleRequest()
at System.Data.Services.DataService`1.ProcessRequestForMessage(Stream messageBody)
at SyncInvokeProcessRequestForMessage(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) …
Run Code Online (Sandbox Code Playgroud)

entity-framework wcf-data-services odata

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

C#中的Amazon Lambda - JsonReaderException

我试图在C#中编写AWS Lambda函数.我有AWS Toolkit for Visual Studio 2015.我使用AWS Lambda项目(.Net Core)创建了一个项目,然后选择了Empty Function选项.这给了我以下代码:

更新和答案02/24/17 - 标记为答案的评论是有用的知识,但不是我的实际答案.这是@PavelSafronov在这个问题的答案是没有的伎俩"的评论.我要么一无所知(并得到错误),或者我认为它希望我以JSON格式提供信息,所以我会输入{ "input": "Some string" }并仍然得到错误.现在我刚刚传入"Some string"就可以了. 但是,就我而言,这似乎是一个错误.一个string是默认nullable,代码亚马逊书面即使假设它可能是通过虚拟的input?.ToUpper(),其中?.被检查null.

注意: 我添加了LambdaLogger.Log行,并Constructor看到我得到的地方:

using Amazon.Lambda.Core;
using Amazon.Lambda.Serialization.Json;

// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(JsonSerializer))]

namespace AWSLambdaTest1 {

  public class Function {

    public Function() {
      LambdaLogger.Log("Within the Constructor");
    } …
Run Code Online (Sandbox Code Playgroud)

c# amazon-web-services aws-lambda

9
推荐指数
2
解决办法
4648
查看次数

实体框架核心 - 迁移 - 没有为此对象定义的无参数构造函数

我正在使用Visual Studio 2017中最新的.Net Core和EF Core.我创建了一个模型,它运行良好.我已经做了一些修改,并在尝试添加新迁移时收到以下错误:

Build succeeded.
  0 Warning(s)
  0 Error(s)

Time Elapsed 00:00:09.08
System.MissingMethodException: No parameterless constructor defined for this object.
  at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
  at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
  at System.Activator.CreateInstance(Type type, Boolean nonPublic)
  at System.Activator.CreateInstance(Type type)
  at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.<>c__DisplayClass12_0.<FindContextTypes>b__3()
  at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func`1 factory)
  at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType)
  at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType)
  at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType)
  at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
  at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
No …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-core asp.net-core

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

Linq我应该返回列表<T>或IEnumerable <T>当我仍然可以做更多的事情

我有一些返回List of T的方法,比如说GetAllEvents.在某些情况下,我需要按日期或项目上的其他属性过滤事件列表(或任何我的列表).

我知道LINQ查询可以被"链接"或者有x行可以进一步细化它们,并且在你需要在非linq语句中实际使用它们之前,查询将不会执行(如果我错了,请纠正我)对这个信徒.)

我的问题是,如果我的GetAllXXX方法返回我得到的任何List,那么我在执行LINQ的GetAllXXX代码结束时使用的.ToList()方法是什么?我应该返回IEnumerable吗?如果仅用于在实际运行查询之前需要对"结果"做进一步操作的情况.

这是我担心的一个例子:我说过1000个事件.GetAllEvents将检索所有1000并给我一个列表.然后,根据用户所在的页面,可能仅显示今天,本周或某个类别的事件.理想情况下,当它到达我向用户显示今天发生的5个事件的时候,我真的不想通过线路传递所有1000,然后将其截断到他们真正想要的5.是的,我知道此时它是所有服务器端,但如果仍然为1000分配内存,我试图避免这种情况.

任何指针或建议?

c# linq memory-management

5
推荐指数
3
解决办法
699
查看次数

ASP.Net 4.5 Twitter Bootstrap和客户端验证

我在Web Forms解决方案中使用新的ASP.Net 4.5进行了相当简单的设置.我已经使用Twitter Bootstrap将近一年了,真正享受它节省我的时间和它带来的一致性.他们的一些JavaScript方法也非常有用.但是,我遇到了一个问题,其中包含了一些似乎需要在4.5中完成的"新方法".这是我的母版页:

<body>
    <form id="frmMain" runat="server">
        <asp:ScriptManager ID="smManager" runat="server">
            <Scripts>
                <asp:ScriptReference Name="jquery" />
                <asp:ScriptReference Name="bootstrap" />
            </Scripts>
        </asp:ScriptManager>
...
Run Code Online (Sandbox Code Playgroud)

以下是测试页面的内容:

<asp:Content ID="Content2" ContentPlaceHolderID="cphMain" runat="server">
    <asp:TextBox ID="txtTest" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Problem" ControlToValidate="txtTest" CssClass="error" SetFocusOnError="True" ToolTip="Problem">*</asp:RequiredFieldValidator>
    <asp:Button ID="btnTest" runat="server" Text="Check" CausesValidation="true" OnClick="btnTest_Click" /><br />
    <asp:TextBox ID="txtAnother" runat="server"></asp:TextBox>
    <asp:Button ID="btnOk" runat="server" CausesValidation="false" Text="No Check" />
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

这是我的Global.asax.cs文件,用于显示上面提到的ScriptReferences:

protected void Application_Start(object sender, EventArgs e) {
    GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

    ScriptManager.ScriptResourceMapping.AddDefinition(
        "jquery",
        new ScriptResourceDefinition {
            Path = "~/Scripts/jquery-1.8.2.min.js",
            DebugPath = "~/Scripts/jquery-1.8.2.js",
            CdnPath = …
Run Code Online (Sandbox Code Playgroud)

asp.net jquery client-side-validation twitter-bootstrap

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

如何手动设置程序集版本

这让我很头疼。我们过去常常将项目属性中的内容放在“[assembly: AssemblyVersion("1.0.0.0")]我完全可以接受更改”下,因此我不在乎它在哪里。我知道他们也将采用新的版本标准,也完全没问题。

大量文件都指向该project.json文件,这显然是一种浪费,因为它不再是合法文件。最近的说法是将以下内容添加到您的.csproj文件中:

<PropertyGroup>
    <VersionPrefix>1.2.3</VersionPrefix>
    <VersionSuffix>alpha</VersionSuffix>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

也完全是浪费。只是因为我似乎无法阅读它。以下总是给我1.0.0.0

PlatformServices.Default.Application.ApplicationVersion
Run Code Online (Sandbox Code Playgroud)

更不用说当我右键单击File Explorer并单击 时PropertiesDetails选项卡也总是显示1.0.0.0

那么,如何在解决方案中设置每个程序集的版本,然后在运行时读取它们?

c# asp.net-core

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

Visual Studio 2017 Asp.Net Core 2.1 TypeScript Vue设置 - 非SPA

我一直在研究这个问题几周(关闭和开启)尝试设置一个新项目,该项目使用最新版本的Visual Studio,Vue,TypeScript和.Net Core(截至今日(05/15/2018)).我不需要(也不想在这个例子中)创建SPA应用程序.所以我的.cshtml页面至少会有一个标记来加载该页面的特定文件.当然,它可能有一个Vue和/或Require.js?

我很难完全配置Visual Studio以获取.ts文件并使用新的ES6编码样式将它们转换为.js文件require.

我尝试合并的一些更有用的链接是这个和另一个在这里.似乎也许.Net Core 2.1可能已经改变了一些东西?我也习惯了传统的.js文件.许多引用Visual Studio Code,但这不是一个选项.

这似乎是一项简单的任务.NPM似乎将互联网下载到项目中,但如果它有效,我会接受它.只是在我的智慧结束.我喜欢的是一步一步的指导创建一个新的VS项目,一直到配置tsconfig.json和Webpack.config.js(如果这是最好的方法)只有一个简单的Vue应用程序显示"去笨蛋吧!" 我关心的一切.前两个啤酒对我来说是可以写下来的人或者让我找到一个链接来完成当前版本中我需要的东西.

谢谢!

typescript vue.js visual-studio-2017

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

以编程方式为 VSTS 生成个人访问令牌

是否有我可以连接的 VSTS REST 端点,以便让用户自助服务另一个 PAT?理想情况下,他们当前的到期前几天。我有一个时间表应用程序,它现在连接到 VSTS 以获取工作项信息并更新所述工作项。但是,在某个时间点(90 天、180 天或一年后),PAT 将到期。我宁愿他们不必离开应用程序来生成一个新的应用程序并将其保存在我的应用程序中。我希望他们只需单击一个按钮即可从我的应用程序中再次生成它。看到我将使用他们当前的 PAT 连接到 REST 端点是安全的。

c# azure-devops

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

尝试将 jQuery ajax 转换为 ES6 fetch

为了不使用 jQuery(如果ajax这是我所需要的),我进行了以下ajax调用,效果非常好。

$.ajax({
  type: "POST",
  url: "/Tests/EEG/Portable/Index?handler=Testing",
  beforeSend: function (xhr) {
    xhr.setRequestHeader("XSRF-TOKEN", $('input:hidden[name="__RequestVerificationToken"]').val());
  },
  data: JSON.stringify(model),
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (response) {
    alert("Success");
  },
  failure: function (response) {
    alert(response);
  }
});
Run Code Online (Sandbox Code Playgroud)

我用标准 JavaScript 重写了它,fetch如下所示:

fetch("/Tests/EEG/Portable/Index?handler=Testing", {
  method: "POST",
  headers: {
    'XSRF-TOKEN': $('input:hidden[name="__RequestVerificationToken"]').val(),
    'content-type': 'application/json; charset=utf-8'
  },
  body: JSON.stringify(model)
}).then(checkStatus)
  .then(function (data) {
    alert("second then");
}).catch(function (error) {
  console.log(error);
});
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

无法加载https://stubidp.sustainsys.com/xxx?SAMLRequest=xxx:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://localhost:58659 ”。如果不透明响应满足您的需求,请将请求模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。

这导致我添加以下属性:

mode: 'no-cors' …
Run Code Online (Sandbox Code Playgroud)

javascript jquery cors fetch-api cross-origin-read-blocking

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