我有一个与MVC2网站并排的WCF服务.我希望我的服务URL看起来像这样:
http://localhost/projdir/Service
MVC网站还处于起步阶段,因此它仍然拥有所有的样板控制器等.
以下代码在global.asax中乍一看:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(new ServiceRoute("Service", new ServiceHostFactory(),
typeof(MyService)));
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index",
id = UrlParameter.Optional } // Parameter defaults
);
}
Run Code Online (Sandbox Code Playgroud)
该服务出现在我描述的地方,并按宣传的方式工作.大.
但是,我只是注意到以这种方式命令我的代码会改变我ActionLink的所有代码.例如,MVC站点上的"关于"选项卡现在显示如下:
http://localhost/projdir/Service?action=About&controller=Home
这显然是不正确的(它应该是http://localhost/projdir/Home/About/).
如果我将ServiceRoute添加移动到默认MapRoute()调用之下,那么我将丢失控制器错误.(实际上我得到一个"StructureMapControllerFactory没有返回控制器的实例"错误,因为我已经连接了StructureMap,呃,它不是一个控制器开始.)
有趣的是,它似乎只影响了产量Html.ActionLink().我可以手动输入http://localhost/projdir/Home/About/并进入正确的页面.
我制作了一个非常明显的新手错误?
我正在与同事讨论何时抛出错误以及何时不在WCF服务中抛出错误.
有一种观点认为,当服务操作由于某些错误而无法完成工作时,我们只会抛出错误; 由于它,某些东西可能处于无效状态.所以,举一些例子:
ValidateMember(字符串名称,字符串密码,字符串国家/地区) - >如果未传递强制参数,则会引发错误,因为验证本身无法执行; - >如果发生了一些内部错误就会抛出错误,比如数据库已关闭 - >会在所有其他情况下返回状态合同,指定验证结果(MemberValidated,WrongPassword,MemberNotKnown,...)
GetMember(int memberId) - >只会在出现故障时抛出错误,在所有其他情况下它会返回成员,如果没有找到则返回null
另一种意见是我们也应该在GetMember找不到该成员时抛出错误,或者在ValidateMember的情况下密码错误.
你怎么看?
场景如下:我们有一个Asp.Net MVC 4应用程序,它有一个私有消息系统,托管一个signalR集线器,用于在新消息可用时通知用户.一切正常,Web App注册connectionId及其用户名,信号通过notificationAdapter类从DataLayer发送到集线器.
当我们必须创建一个利用Quartz.Net的单独服务时,问题出现了,Quartz.Net也会在任务完成时发送私信.我们希望Quartz服务能够联系Hub,但我们不能让它在一个单独的过程中.我不想使用signalR .net客户端,因为我不需要基于Quartz的服务和我的Web App之间的永久连接.我想在我的WebSite中创建一个端点,将Hub的服务器方法暴露给服务或者使用ScaleOut,但我觉得我想念一些东西,虽然我会问社区.
我花了一些时间让XCode找到Facebook sdk.
我在"项目设置"中将"....../facebook-ios-sdk/src"添加到"标题搜索路径"中("目标信息"中的"标题搜索路径"未显示该目录),并使用:
#import "FBConnect.h" ,
而不是#import "FBConnect/FBConnect.h",然后XCode可以找到Facebook sdk.
由于'FBConnect.h'是直接在/ src下,在哪里'FBConnect'?什么"FBConnect/FBConnect.h"意思?你们在#import "FBConnect/FBConnect.h"没有手动'FBConnect'在XCode中添加目录或组的情况下使用吗?
我经常回答有关内存管理,UITableView,界面定位,MVC等基本主题的同类问题......
我很清楚,每个从这个SDK开始的人都太过兴奋了,但是一点点的阅读可以节省他们几个小时的调试时间以及"我们在这里错过了什么"的感觉所带来的挫败感.
我希望有经验的用户分享一些小文章,白皮书,文档,书籍章节,帮助其他人节省时间,避免挫败感.
我的第一次投票将是:
作为一般性建议,请阅读参考库中每个类的文档附带的概述部分,它包含了大部分您需要知道的以避免大陷阱!
model-view-controller cocoa-touch memory-management objective-c ios
我使用WCF来使用一个尊重WS表单的Web服务(然后我使用WSHttpBinding绑定).此表单涉及MessageID要在soap请求的标头中设置,并且RelatesTo字段中的响应标头中存在相同的id .我想记录我与此MessageId一起发出的请求,但无法找到检索WCF设置的messageId的方法,也可以手动设置它.我设法通过设置在球场上正确的属性,但是,要求这样做,让我将它,但是从响应得到它似乎WCF覆盖它,不要让我访问新值事件已经调用了.
任何的想法 ?
我们有一个使用MsmqBinding和WAS的WCF日志服务.问题是我尝试从远程计算机使用它,并且该消息似乎永远不会到达目标队列.以下是事实:
而且价值是:
var queue = new MessageQueue(@"FormatName:DIRECT=OS:logserver.domain.ext\private$\logservice.svc");
queue.Send("hello");
Run Code Online (Sandbox Code Playgroud)
工作!
大家好,我在下一段代码中得到了编译错误('不能修改字典的返回值,因为它不是变量'):
public class BaseForm : Form
{
protected void StoreGridViewPosition(DataGridView grid)
{
if (grids.ContainsKey(grid))
{
grids[grid].RowIndex = grid.CurrentCell.RowIndex;
grids[grid].ColumnIndex = grid.CurrentCell.ColumnIndex;
}
Cell s = new Cell();
s.RowIndex = 213;
}
protected void LoadGridViewPosition(DataGridView grid)
{
}
private Dictionary<DataGridView, Cell> grids = new Dictionary<DataGridView, Cell>();
private struct Cell
{
public int RowIndex;
public int ColumnIndex;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我用类替换struct(Cell),那么它可以正常工作.为什么会这样?
wcf ×4
c# ×3
architecture ×2
class ×1
cocoa-touch ×1
exception ×1
faults ×1
fbconnect ×1
header-files ×1
ios ×1
iphone ×1
msmq ×1
objective-c ×1
routing ×1
signalr ×1
struct ×1
winforms ×1