有没有人有关于在ASP.Net MVC应用程序中使用Web服务作为模型的建议或提示?我没有看到有人写这样做.我想构建一个MVC应用程序,但不是将它绑定到使用特定数据库,也不是将数据库限制为单个MVC应用程序.我觉得一个Web服务(RESTful,很可能是ADO.Net数据服务)是要走的路.
我在对象A到B的数据库中有多对多的关系.当我创建域服务时,元数据看起来很好.A有Bs的集合,B有As的集合.所以这是正确的.但是生成的*.g.cs文件没有相同的关系.
有没有办法让它发挥作用?我用Google搜索了一些实际为关联表生成对象的答案,但我很好奇我是否可以避免这种情况.
谢谢
我在Visual Studio 2010中没有看到OData(或WCF数据服务或ADO.NET服务)模板.我是否遗漏了某些内容
对于哪些应用程序或开发方案,WCF数据服务的使用是有意义的,何时其他技术是更好的选择(例如WCF RIA服务,ADO实体框架,经典ADO.NET,简单服务或其他)?
我已经看到一些引用声明WCF数据服务自动处理更改跟踪.这是否意味着您不需要创建自我跟踪实体(STE)并且它可以自动与任何实体对象类型一起使用?对不起,这里有点困惑,并一直在努力找到一个资源,为我清除这一点.
谢谢
是否已使用ADO.NET数据服务的VS2008 SP1版本删除了$ format参数.我尝试使用它,我得到错误:
查询参数'$ format'以系统保留的'$'字符开头,但无法识别.
我认为对Atom东西的支持非常酷,但你能得到"普通的旧xml"吗?
当我将WCF数据服务部署到生产主机时,我开始收到以下错误(或类似,具体取决于哪些身份验证方案处于活动状态):
IIS指定了身份验证方案"Basic,Anonymous",但绑定仅支持一种身份验证方案的规范.有效的身份验证方案是Digest,Negotiate,NTLM,Basic或Anonymous.更改IIS设置,以便仅使用单个身份验证方案.
显然,WCF数据服务(通常是WCF?)无法处理多次激活的身份验证方案.
好的,所以我知道我可以通过IIS控制面板在Web应用程序上禁用所有但一个身份验证方案....通过支持请求!!
有没有办法在web.config中的每个服务级别指定一个身份验证方案?
我认为这可能会像改变那样直接<system.serviceModel>但是......事实证明,WCF数据服务不会在Web配置中自行配置.如果你看一下DataService<>它没有实现的类,[ServiceContract]你就不能在<service><endpoint>...中引用它...我认为通过XML更改其配置需要它.
PS我们的主机使用的是II6,但IIS6和IIS7的两种解决方案都很受欢迎.
我遇到了一个问题,当我尝试使用OfType()方法对我的odata服务进行linq查询时,我收到一条错误消息,指出该请求对于版本2服务无效.我创建了WCF数据服务并将MaxProtocolVersion设置为v3.
public class TestDirectorySearch : DataService<TestDirectoryEntities>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.SetEntitySetPageSize("*", 50);
config.UseVerboseErrors = true;
config.DataServiceBehavior.MaxProtocolVersion = System.Data.Services.Common.DataServiceProtocolVersion.V3;
}
}
Run Code Online (Sandbox Code Playgroud)
我的edmx有以下几行:
<edmx:DataServices m:DataServiceVersion="1.0"
m:MaxDataServiceVersion="3.0"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
Run Code Online (Sandbox Code Playgroud)
当我尝试执行以下查询时,我收到一条错误消息,指出当MaxProtocolVersion小于'3.0'时,不支持"方法'OfType'."
from test in context.Tests.OfType<OrderableTest>()
where test.TestRevisionId.Equals(mmt.RevisionId)
select new
{
Reflex = test.ReflexTest
, ShipTemp = (test.SpecimenTemperature == null) ? null : test.SpecimenTemperature.DisplayDescription
}).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
如果我检查上下文的MaxProtocolVersion,则将其设置为v2.这在什么时候失败了?我该怎么做才能正确设置?
确切的错误:
{"当MaxProtocolVersion小于'3.0'时,不支持'OfType'方法."}
请求的堆栈跟踪:
at System.Data.Services.Client.ResourceBinder.AnalyzeOfType(MethodCallExpression mce, DataServiceProtocolVersion maxProtocolVersion)
at System.Data.Services.Client.ResourceBinder.VisitMethodCall(MethodCallExpression mce)
at System.Data.Services.Client.ALinqExpressionVisitor.Visit(Expression exp)
at System.Data.Services.Client.DataServiceALinqExpressionVisitor.Visit(Expression exp)
at System.Data.Services.Client.ALinqExpressionVisitor.VisitExpressionList(ReadOnlyCollection`1 original)
at System.Data.Services.Client.ALinqExpressionVisitor.VisitMethodCall(MethodCallExpression m)
at System.Data.Services.Client.ResourceBinder.VisitMethodCall(MethodCallExpression …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用WCF数据服务提供的OData服务来实现我认为的简单场景(使用OData V3应用程序/ json; odata =详细的有效载荷格式,现在.我将来可能会使用JSON Light格式) .基本情况如下:
我有两个实体:
class Person
{
public int ID { get; set; }
public string Name { get; set; }
public virtual PersonCategory Category { get; set; }
}
class PersonCategory
{
public int ID { get; set; }
public string Description { get; set; }
public virtual ICollection<Person> People { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,我想为Person创建一个简单的编辑页面.此编辑页面可能具有Name的输入,以及Person类别的输入或下拉列表.
所以,场景如下:
这里的关键是"单一请求".这是我找不到文档的部分.我见过他们将上面的数字3分成两个请求的例子.这样的事情(我不记得确切的格式 - 我也不确定你在做PUT之前是否必须删除Category链接):
PATCH /api.svc/People(1) with content: {"Name": "new name" }
PUT /api.svc/People(1)/$links/Category …Run Code Online (Sandbox Code Playgroud) 您好我使用HttpWebRequest GET方法来调用REST服务.我收到错误: - ***'Content-Type'标头必须使用适当的属性或方法进行修改.参数名称:name.***我从stackoverflow检查了所有与此问题相关的答案.
我的代码: -
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
Getvalue(TextBox1.Text,TextBox2.Text,TextBox3.Text);
}
private void Getvalue(string text1, string text2, string text3)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.KeepAlive = true;
request.ContentType = "appication/json";
request.Headers.Add("Content-Type", "appication/json");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string myResponse = "";
using (System.IO.StreamReader sr = new system.IO.StreamReader(response.GetResponseStream()))
{
myResponse = sr.ReadToEnd(); …Run Code Online (Sandbox Code Playgroud)