今天是个好日子...
显然,我没有为我的WCF服务正确设置模拟.我不希望逐个方法地设置安全性(在实际的代码隐藏中).该服务(目前)是开放的,由内联网上的每个人调用.
所以我的问题是......
问:我错过了哪些web-config标签?
问:我需要在web-config中进行哪些更改才能进行模拟工作?
服务Web.config看起来像......
<configuration>
<system.web>
<authorization>
<allow users="?"/>
</authorization>
<authentication mode="Windows"/>
<identity impersonate="true" userName="MyDomain\MyUser" password="MyPassword"/>
</system.web>
<system.serviceModel>
<services>
<service behaviorConfiguration="wcfFISH.DataServiceBehavior" name="wcfFISH.DataService">
<endpoint address="" binding="wsHttpBinding" contract="wcfFISH.IFishData">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="wcfFISH.DataServiceBehavior">
<serviceMetadata httpGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Run Code Online (Sandbox Code Playgroud) 我正在跟踪各种在线示例,但都没有成功。我只是试图创建一个将值传递给Web服务调用的初始示例。
我究竟做错了什么?
我可以使用HttpHandlers轻松实现此功能...这个简单的事情应该不难吗?
更新:
失败的原因是因为缺少“ contentType”属性。下面的答案对此进行了概述。
这是我不断得到的错误:
System.InvalidOperationException: Missing parameter: key.\r\n at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)\r\n at System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request)\r\n at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()\r\n at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
Run Code Online (Sandbox Code Playgroud)
这是HTML:
<script type="text/javascript">
var url = '<%=ResolveUrl("~/Services/ProjectDialog.asmx/TryThis")%>';
function callWebService() {
jQuery.ajax({
cache: false,
type: 'POST',
complete: onComplete,
data: '{ "key": 42 }',
dataType: 'application/json; charset=utf-8',
error: onError,
success: onSuccess,
url: url
});
}
function onComplete(status, xmlHttpRequest) {
var stop = "";
}
function onError(xmlHttpRequest, status, error) {
var stop = "";
}
function onSuccess(data, status, xmlHttpRequest) { …
Run Code Online (Sandbox Code Playgroud) 我有一个面试问题,无法完成它,并想知道正确的答案.
public interface ICustomer
{
string Name { get; }
IEnumerable<IOrder> Orders { get; }
}
public interface IOrder
{
IEnumerable<IOrderItem> OrderItems { get; }
}
public interface IOrderItem
{
IEnumerable<IProduct> Products { get; }
}
public interface IProduct
{
string Name { get; }
}
public class CustomersController : ApiController
{
public IEnumerable<IOrderItem> List(ICustomer customer)
{
// Return All OrderItems for all orders
}
}
Run Code Online (Sandbox Code Playgroud) 我们公司正在将数据库迁移到高可用性,主动 - 主动(HA/AA)环境.我们选择的中间件工具使得在实例之间迁移Identity列非常痛苦.因此,我和其他人想要使用uniqueidentifiers
(即Guid)用于所有新表的主键.
注意事项:
建议的解决方案:
使用顺序uniqueidentifier
作为表的主键
关注:
使用uniqueidentifier
表作为主键的数百万条记录的效果.
问题:一般来说,uniqueidentifier
在这些情况下你的表现如何?
更新:
按主键我的意思是代理.
今天是个好日子...
我收到一个意外的WCF错误,抱怨"已知类型",它们的名称相似,但在不同的名称空间中(请参阅下面的错误).
...请记住我还在试验这一切.
也…
我已经理解了常规Web服务的性质FORCES你要展平你的对象层次结构,但我读过的所有内容都表明你不必用WCF做到这一点......这就是为什么我要尝试这个.
所以我的问题是......
基本错误是......
类型'wcfFISH.StateManagement.Contractor.New'无法添加到已知类型列表中,因为已存在具有相同数据协定名称'wcfFISH.StateManagement.Contractor:New'的另一种类型'wcfFISH.StateManagement.CostDivision.New'.
错误看起来像......
An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.InvalidOperationException: An exception was thrown in a call to a WSDL export extension: System.ServiceModel.Description.DataContractSerializerOperationBehavior
contract: http://tempuri.org/:IFishData ----> System.InvalidOperationException: Type 'wcfFISH.StateManagement.Contractor.New' cannot be added to list of known types since another type 'wcfFISH.StateManagement.CostDivision.New' with the same data contract name 'wcfFISH.StateManagement.Contractor:New' is already present.
at System.Runtime.Serialization.DataContract.CheckAndAdd(Type type, Dictionary`2 typesChecked, Dictionary`2& nameToDataContractTable)
at System.Runtime.Serialization.DataContract.ImportKnownTypeAttributes(Type type, Dictionary`2 typesChecked, Dictionary`2& knownDataContracts)
at System.Runtime.Serialization.DataContract.ImportKnownTypeAttributes(Type type) …
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,管理项目成本从一百万到几十亿美元.最初,用户输入项目的估计值:称为"拨款金额".
问题是:
原始值未按预期转换.一些例子包括:
他们输入:111,222,333
它转换为:111,222,336
他们输入:111,222,333,444
它转换为:111,222,333,440
这里
出现的问题:在以下代码行转换时会出现问题......
project.AppropriationAmount = (!String.IsNullOrEmpty(txtAppropriationDollars.Text)) ? Convert.ToSingle(txtAppropriationDollars.Text) : 0;
Run Code Online (Sandbox Code Playgroud)
注意:
project.AppropriationAmount
是一个float
.
谢谢您的帮助!
我在页面上有一个单独的组件(有条件地)更新 Kendo UI 网格。当用户单击一行时...我希望触发更改事件。然而,它目前还没有发射。
为什么更改事件没有触发?
DOJO:
我创建了以下 DOJO来支持这个问题。
谢谢
我正在尝试阻止用户在输入电子邮件地址时输入无效字符.我并不是试图将整个价值作为一个整体验证(后来发生).
我"认为"这是防止字符列表(例如#或$)的正确方法:
/[A-Z0-9a-z@]^[$#<>?]/
Run Code Online (Sandbox Code Playgroud)
这部分有效:
/[A-Z0-9a-z@]/
Run Code Online (Sandbox Code Playgroud)
这部分失败了:
/^[$#<>?]/
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
c# ×2
javascript ×2
jquery ×2
wcf ×2
kendo-grid ×1
kendo-ui ×1
known-types ×1
linq ×1
regex ×1
sql ×1
sql-server ×1
wcf-security ×1
web-services ×1