我正在尝试使用WCF RESTful Web服务,而我遇到了自动实现属性的问题.
我有一个名为DeviceDescriptor的类,定义如下:
public class DeviceDescriptor
{
public string DeviceId { get; set; }
public string DisplayName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个RESTful WCF服务,它应该返回一个DeviceDescriptors列表 - 这是我的服务合同:
[ServiceContract]
public interface IChooser
{
[WebGet(UriTemplate="/Chooser/RegisteredDevices")]
[OperationContract]
List<DeviceDescriptor> RegisteredDevices();
[WebGet(UriTemplate = "/Chooser/Ping")]
[OperationContract]
string Ping();
}
Run Code Online (Sandbox Code Playgroud)
好吧,它有点工作,除了在XML输出中,属性名称不正确,看起来序列化程序使用自动生成的支持字段的"不可知名称"而不是属性名称.我的输出如下:
<DeviceDescriptor>
<_x003C_DeviceId_x003E_k__BackingField>Pipe.Dome</_x003C_DeviceId_x003E_k__BackingField>
<_x003C_DisplayName_x003E_k__BackingField>Pipe diagnostic tool</_x003C_DisplayName_x003E_k__BackingField>
</DeviceDescriptor>
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法解决这个问题呢?为什么没有; WCF使用属性名称?
我正在与第三方供应商合作,他们提供了一个ASP.Net Web应用程序.该网络应用程序每天产生大约200个未处理的例外,最终作为我的收件箱中的电子邮件.经过调查后发现,大多数这些错误都是由GoogleBot网络抓取工具索引网站并触发对另一个第三方网络服务的访问而触发的,这会对请求进行速率限制.当超出请求限制时,第三方Web服务拒绝该请求,这将导致Web服务器中的未处理异常和HTTP/500状态代码.例外情况如下:
Exception: Exception of type 'System.Web.HttpUnhandledException' was thrown., Stack Trace: at System.Web.UI.Page.HandleError(Exception e) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequest(HttpContext context) at ASP.views_products_detail_aspx.ProcessRequest(HttpContext context) at System.Web.Mvc.ViewPage.RenderView(ViewContext viewContext) at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) at System.Web.Mvc.ControllerActionInvoker.c__DisplayClass11.b__e() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
Web应用程序开发人员似乎不愿意处理这些错误,原因我并不理解.他们的方法是限制谷歌博客,直到错误停止发生(谷歌索引相当aggressivley,每天产生约5,000次点击).虽然我接受限制GoogleBot会起作用,但对我来说这似乎是个问题.我一直认为未处理的异常是错误.Web应用程序不应该处理这些错误吗?这是以往任何时候都可以接受的允许HTTP/500的情况发生?网络开发人员在想什么?
我注意到,如果我创建一个公开ArrayList的.NET组件,那么该ArrayList将通过COM Interop并以脚本语言(如VBScript)提供.
泛型,如IList<T>似乎没有工作.
为什么这样,是否有任何方法可以使通用类型成功地通过COM Interop流向脚本引擎?
我的发射条件怎么样?它应该阻止x86安装程序在64位系统上运行,但似乎没有任何效果.
<!-- Launch Condition to check that x64 installer is used on x64 systems -->
<Condition Message="64-bit operating system was detected, please use the 64-bit installer.">
<![CDATA[VersionNT64 AND ($(var.Win64) = "no")]]>
</Condition>
Run Code Online (Sandbox Code Playgroud)
var.Win64 是从MSBuild变量派生的,如下所示:
<!-- Define platform-specific names and locations -->
<?if $(var.Platform) = x64 ?>
<?define ProductName = "$(var.InstallName) (x64)" ?>
<?define Win64 = "yes" ?>
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?define PlatformCommonFilesFolder = "CommonFiles64Folder" ?>
<?else ?>
<?define ProductName = "$(var.InstallName) (x86)" ?>
<?define Win64 = "no" ?> …Run Code Online (Sandbox Code Playgroud) 我一直在使用MSpec,我真的很喜欢它.我发现要让ReSharper识别我的规格,我需要使用SubjectAttribute.
我想知道,在[Subject()]属性中放入什么是最好的东西?
如果我正在做BDD,那么我不知道被测试的类型所以[Subject(typeof(thingy))]似乎为时过早.可以在以后添加,我想一旦编写代码.
所以留下文本版本,[Subject("some text")].但放在那里最好的是什么?
无论我做什么,它似乎都不会影响我在ReSharper中获得的输出.我想在某种程度上这取决于个人偏好,但我想知道这里是否有任何约定?
我们使用TeamCity 7.1.1在经过身份验证的URL和公共源URL上发布NuGet包.我刚刚创建了一个新的软件包,并且无法让它显示在公共源上,但是一旦我登录就会出现在私有源上.
它有一个权限问题,但我已在该版本上为"所有用户"分配了"项目查看器"角色.我有另一个正确显示的构建,配置似乎相同.什么可以阻止我的新版本出现在公共Feed上?
我正在考虑使用MEF来解决插件管理要求.在模糊中它表示"没有硬依赖",但据我所知,导入/导出界面存在严重依赖.
我担心的是这个.我的可扩展应用程序是由我编写的.插件由第三方编写.所以我们都说从V1开始.我的应用程序定义了IPlugin插件"部件"需要实现的接口.我们部署应用程序,用户安装了一堆第三方插件.一切都很好.
现在我升级了我的应用程序,我想在插件界面中添加一个新方法.我看到它的方式我有两个选择:
创建一个新的'V2'接口,继承自原始接口
公共接口IPluginV2:IPlugin {}
现在我有一个问题.我的用户都有一堆第三方插件实现IPlugin,但我现在要求他们实现IPluginV2.我认为这些第三方插件将不再有效,直到开发人员实现新界面.
MEF有办法处理这种情况吗?我真的在寻找一种让我可以改进我的应用程序的方法,同时让旧的插件继续工作而不必重建.什么是最好的处理方式?
我是Java的新手,也是Rx的新手.我处于深渊.我正处于编写将使用MVC(模型 - 视图 - 控制器)模式的Android应用程序的早期阶段,我正在尝试各种方法,特别是RxJava.我的想法是让我的型号的Observable和我查看了Observer.然后,模型(或包装类)每次数据更改时都会发出模型的新副本.在.net我会考虑使用INotifyPropertyChanged.
我想我需要实现一个自定义Observable- 但是如何?有很多关于如何将集合转换为observable的文档,但这不适合我的用例,因为我没有集合 - 只有一个项目,即数据模型.有没有办法做到这一点?记住我正在为Android开发,所以我不能使用lambdas或类似的任何东西.
[更新]感谢AndréStaltz的回答,我认为我不在起跑线上了.我想出了这堂课:
import rx.Observable;
import rx.subjects.BehaviorSubject;
public class ObservableModel<TModel>
{
private TModel modelData;
private BehaviorSubject<TModel> modelStream;
private boolean disposed = false;
public ObservableModel(TModel modelData)
{
this.modelData = modelData;
modelStream = BehaviorSubject.create(modelData);
}
public TModel getModelData()
{
if (disposed)
{
throw new UnsupportedOperationException("The object has been disposed");
}
return modelData;
}
public void setModelData(TModel modelData)
{
if (disposed)
{
throw new …Run Code Online (Sandbox Code Playgroud) 有没有人想出一种方法允许远程用户在VisualSVN服务器中更改自己的密码?我们让它以'独立'(非ActiveDirectory)模式运行,我发现这个优秀产品的唯一缺点是用户无法设置或更改其密码.
这是我可以忍受的东西,但密码永远不会改变的安全含义是众所周知的.我确信必须能够添加功能,但我在VisualSVN使用的任何技术中都没有一点天赋 - 所以只是想知道是否有人这样做过?
我决定自己实施这项计划.密码加密是我感谢一些帮助的第一个障碍.我发现VisualSVN有一个密码文件,htpasswd其中有一个用户列表,格式如下:
JoePublic:$ APR1 $ LPQ $ kF8nZjjuFxgJBExK8ruf20
JoePublic是用户名,我假设冒号是分隔符,其余的是某种密码哈希.在这种情况下使用的实际密码是ForgetMeNot.
这似乎不是MD5或SHA哈希,但我在这方面并不是非常明智,所以很可能.鉴于上述信息,任何人都可以推断出使用的算法吗?
我刚从codeplex克隆OrchardCMS,构建它并尝试使用Visual Studio的'Publish'命令将其部署到我的Web托管服务.
没有文件发布,发布失败,并出现以下错误:
1>------ Publish started: Project: Orchard.Web, Configuration: Release Any CPU ------ 1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(2352,5): Error : Could not open Source file: Could not find a part of the path 'C:\Users\Tim\targetsite.co.uk\src\Orchard.Web\Media\web.config;Media\web.config'. 1> ========== Build: 0 succeeded, 0 failed, 5 up-to-date, 0 skipped ========== ========== Publish: 0 succeeded, 1 failed, 0 skipped ==========
我检查了源代码,文件在那里,并在正确的文件夹中.那么这个错误信息实际上试图告诉我什么?这里发生了什么,我该如何解决?
android ×1
asp.net ×1
asp.net-mvc ×1
authz ×1
bdd ×1
c# ×1
com-interop ×1
composition ×1
generics ×1
iis-7 ×1
java ×1
mef ×1
msbuild-wpp ×1
mspec ×1
nuget ×1
nuget-server ×1
orchardcms ×1
passwords ×1
plugins ×1
rest ×1
rx-java ×1
scripting ×1
svn ×1
tdd ×1
teamcity ×1
wcf ×1
webdeploy ×1
wix ×1
wix3.5 ×1
xml ×1