小编Pro*_*m.X的帖子

WCF MetaData无法正常工作

我已多次尝试让我的WCF服务公开MetaData.相反,我一直保持例外:

在服务SecurityBroker实现的合同列表中找不到合同名称"IMetadataExchange" .将ServiceMetadataBehavior直接添加到配置文件或ServiceHost以启用对此合同的支持.

...使用IE手动浏览服务时.

(我假设这与我的客户端应用程序无法生成服务引用的原因相同.婴儿步骤和所有)

然而我的web.config看起来还不错:

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<behaviors>
    <endpointBehaviors>
        <behavior name="webHttpEnablingBehaviour">
            <webHttp />
        </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
        <behavior name="webHttpEnablingBehaviour">
            <serviceMetadata httpGetEnabled="true" />
        </behavior>
    </serviceBehaviors>
</behaviors>
<services>
    <service name="IWW.MIGTurbo2.WCF.Security.SecurityBroker">
        <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
        <endpoint address=""
            binding="webHttpBinding"
            bindingConfiguration="default"
            contract="IWW.MIGTurbo2.WCF.Security.ISecurityBroker"
                behaviorConfiguration="webHttpEnablingBehaviour">
        </endpoint>
    </service>
</services>
<client />
<bindings>
    <webHttpBinding>
        <binding name="default" />
    </webHttpBinding>
</bindings>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

所以我的meetadataExchange合约定义为mex很好,并且我已经看到了.我错过了什么愚蠢的东西?

编辑

如果有用,我的服务定义如下所示:

<%@ ServiceHost Language="C#" Debug="true" Service="IWW.MIGTurbo2.WCF.Security.SecurityBroker" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory"   %>
Run Code Online (Sandbox Code Playgroud)

wcf

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

服务器在区域设置中设置为 en-GB,但日期时间解析为 en-US

我通过将每条记录推送到验证阶段,然后将其放入数据库来处理记录。验证步骤之一需要检查某些列是否是日期。我使用 DateTime.TryParse(s, out DateTime) 执行此操作,假设这将使用运行进程的计算机上配置的区域设置。在我的本地计算机上,这是一个在 Visual Studio 的命令行工具中运行的包装类(为了便于调试)。因此,根据我的 Windows 7 开发计算机上的 en-GB 设置,13/01/2010 被格式化为 2010 年 1 月 13 日。

将其推送到我们的测试服务器(Windows Server 2008 R2)上时,该包装类在 Window 服务(在 LocalSystem 帐户下)内运行。完全相同的代码,我将其设计为服务只是一个薄包装。然而,经过多次调试后,服务器似乎将 13/01/2010 解析为 en-US,因此失败。尽管区域设置被设置为 en-GB,但仍然如此。(见截图)

服务器上的区域设置

请注意,这是在到达 SQL Server 之前,因此这不是此问题的一部分。

在与此斗争之后,我通过使用下面的代码并将所需的格式设置为 en-GB 来强制这种情况。

Culture = CultureInfo.CreateSpecificCulture("en-GB");
DateTimeStyles dateTimeStyles = DateTimeStyles.None;
DateTime dt;
bool pass = DateTime.TryParse(s,Culture,dateTimeStyles, out dt);
Run Code Online (Sandbox Code Playgroud)

现在这有效了。我的问题是,为什么在本地系统下运行的 Windows 服务会假定 en-US 而不是 en-GB?

c# regional-settings

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

ASP.NET MVC路由 - 所有看起来都匹配正确的路由模板,但不起作用

我有一个具有"一般"路径结构的站点,以及一个额外的"翻译"区域.所以在顶层,你有类似的东西:

  • /
  • /关于("通用")
  • /翻译(区域)

在Translate区域内,我有:

  • /翻译/ Word(WordController,索引动作)
  • /翻译/ Word/Add(WordController,添加动作)
  • /翻译/ Word /改进(WordController,改进动作)

所有这些工作.

但是,只要我在现有结构中添加另一个控制器,例如.定义......

  • /翻译/定义(DefinitionController,索引动作)
  • /翻译/定义/添加(DefinitionController,添加操作)

或发音......

  • /翻译/发音(发音控制器,索引动作)
  • /翻译/发音/添加(发音控制器,添加动作)

我得到的只是404.

我所在地区的路由配置如下:

public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Translate_direct",
            "Translate/{controller}/{action}",
            new { action = "Index", controller = "Default", }
        );
        context.MapRoute(
            "Translate_default",
            "Translate/{toLanguageCode}/{query}/{fromLanguageCode}/{controller}/{section}/{action}/{id}",
            new { action = "Index", controller="Default", id = UrlParameter.Optional, section=UrlParameter.Optional }
        );
    }
Run Code Online (Sandbox Code Playgroud)

我安装了Phil Haack的RouteDebugger并得到了以下结果:

截图

因此它似乎与Controller和Action相匹配,但我得到的是404.

为了完整性和保证,还显示了我的"MVC"文件结构:

在此输入图像描述

我显然错过了一些显而易见的东西,但不确定是什么......?


更新:

似乎我的命名空间以某种方式涉及.

我的TranslateAreaRegistration类的命名空间为Taggloo.Web.Client.Areas.Translate,但我的PronunciationController的命名空间为*Taggloo.Web.**Mvc.**Client.Areas.Translate.Controllers*

似乎我的命名空间中的错误导致两者不同(TranslateAreRegistration类也应该在Taggloo.Web.Mvc.Client.Areas.Translate命名空间中)是问题.我尝试将它们都制作成Taggloo.Web.Mvc ....但这不起作用.我不情愿地将它们都设置为Taggloo.Web.Client ......而现在它可以工作了.

所以不是一个解决方案,一个解决方法,尽管环顾四周,我仍然没有明白为什么.

asp.net-mvc asp.net-mvc-routing

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

抑制Outlook现场打印

我们为Outlook编写了一个附加组件,用于将电子邮件存入我们的CRM系统.在此过程中,它将Outlook消息ID作为UserField保存在消息本身上.

例如.

currentUserProperty = Constants.APPLICATION_NAME + "EntryID";
mailItem.UserProperties.Add(currentUserProperty,
       Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText,
       Missing.Value,
       Missing.Value).Value = entryId;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是一个HUUUGGEE号码,很像:

"00000000D502D779150E2F4580B1AADDF04ECDA6070097EF5A1237597748A4B4F9BFF540020800000006E9E4000068BB5B6DFC36924FAEC709A17D056583000002DE0E350000"

问题是,当用户打印消息时,Outlook坚持要包含此字段(在From/To下面)并且因为它没有空格,所以无法包装ID并压缩A4页面直到它可以水平放置.这会产生极小的电子邮件打印输出.

有什么方法可以纠正这个吗?我曾想过用一个空格分隔的覆盖字段OriginalEntryID(导致问题的那个),但是我从COM层得到一个异常.我的下一步是尝试抑制Outlook上此和其他用户定义字段的输出静止.

有谁知道如何实现这一目标?

c# outlook

4
推荐指数
1
解决办法
1221
查看次数

svn - 远程,断开连接工作

我们使用svn,我将开始在家工作.我有想法带上我的笔记本电脑,检查项目并将其带回家,在周一返回并撤销该过程.

但它是一个笨重的笔记本电脑,我不喜欢骑在背上工作.

是否可以改为:

  1. 创建第二个Windows/SVN用户"MeRemote"
  2. 检查项目到"MeRemote"下的另一个位置
  3. 将这些文件复制到USB磁盘
  4. 把磁盘带回家,"本地"处理文件
  5. 星期一返回,复制"MeRemote"检出项目
  6. "MeRemote"承诺更改回购
  7. "RealMe"更新了更改.

这样,当我在办公室/家里工作时,所有东西都被记录下来并加盖印章,我不需要拉着我沉重的笔记本电脑,源控制仍然保持一致.

这是正确的方法吗?在我进入另一个SVN疼痛世界之前检查一下.

我们正在使用SVN,VisualSVN Server,Visual SVN客户端和TortoiseSVN.

svn tortoisesvn

4
推荐指数
1
解决办法
1285
查看次数

计算一个月内的星期数

可能重复:
计算.NET中的每月星期

我需要计算一个月内给定日期的星期数。我之所以勇气一个月,是因为我遇到的所有示例(在这里和其他地方)都是基于年度的。基本上,我想看看什么是14/2/2010星期几(dd / MM / yyyy格式)。给定星期一的开始日期,我希望它会返回2。

在计算中我必须如何了解文化?

c# culture

3
推荐指数
1
解决办法
2万
查看次数

添加NTAUTHORITY\NETWORK SERVICE登录并将其授予SQL 2000数据库

我正在尝试为CI /部署目的创建脚本,但遇到了问题.不幸的是,我不得不使用SQL 2000,这超出了我的舒适范围.

看起来,不支持CREATE USER ... FOR LOGIN,所以我必须使用sp_addlogin和sp_adduser.

我需要授予NT AUTHORITY\NETWORK SERVICE用户的权限:

EXEC sp_addlogin N'NT AUTHORITY\NETWORK SERVICE'
EXEC sp_adduser N'NT AUTHORITY\NETWORK SERVICE'
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为sp_addlogin调用返回错误:

'NT AUTHORITY\NETWORK SERVICE'不是有效名称,因为它包含无效字符.

那么我该如何实现呢?

t-sql sql-server

3
推荐指数
1
解决办法
1万
查看次数

ObjectStateManager不包含带有对象引用的ObjectStateEntry

我以为我理解EF,特别是在极其简单的CRUD方面,但我可能错了.

我有一个ObjectContext/Repository模式,在这种情况下是一个VatCode实体,它有一个VatRates集合.

VatCode 1 - *VatRate

我想为CRUDing提供这些实体的功能.这是在WPF应用程序中,并且正在"断开连接",因为我没有不必要地打开DB连接.我更喜欢数据库访问的输入/输出方法.这在以下集成测试中显示:

    [TestMethod()]
    public void AddVatRateAndSaveVatCodeTest()
    {
        VatCode vatCode=null;
        DateTime expectedDateFrom = DateTime.Now.AddDays(1).Date;
        using (SopEntities sopEntities = EntitiesFactory.Create(Properties.Resources.ConnectionString))
        {
            VatRepository target = new VatRepository(sopEntities);
            vatCode = target.SingleOrDefault(q => q.Key == "X4");
            Assert.IsNotNull(vatCode);
        }

        // mimick offline editing/disconnect

        using (SopEntities sopEntities = EntitiesFactory.Create(Properties.Resources.ConnectionString))
        {
            VatRepository target = new VatRepository(sopEntities);


            vatCode.VatRates.Add(new VatRate()
                {
                    DateFrom=expectedDateFrom,
                    Rate=20
                });
            target.Attach(vatCode);
            target.SaveChanges();
        }

        using (SopEntities sopEntities=EntitiesFactory.Create(Properties.Resources.ConnectionString))
        {
            VatRepository vatRepository=new VatRepository(sopEntities);
            VatCode actual=vatRepository.SingleOrDefault(q=>q.Key=="X3");
            Assert.IsNotNull(actual);
            Assert.AreEqual(vatCode.VatRates.Count,actual.VatRates.Count);
            Assert.AreEqual(expectedDateFrom,actual.VatRates.OrderBy(q=>q.DateFrom).Last().DateFrom);
        }
    }
Run Code Online (Sandbox Code Playgroud)

代码很简单.它检索已知的现有实体并将其分配给vatCode.然后,该实体在UI上的ViewModel中传递,并重新保存.在这个测试中,我通过打开一个新的上下文来模仿这个.这正是我在UI中的意思,所以我在这里证明了这一点.

但是,在调用vatRepository的Attach()方法时,它具有以下方法体:

    public void …
Run Code Online (Sandbox Code Playgroud)

entity-framework-4

3
推荐指数
1
解决办法
1万
查看次数

防止NHibernate映射属性到代理

我正在寻找解决我的问题的方法,但我得到的是这种情况发生的原因,而不是防止发生.

我有一个类,WorkflowActivityInstance其中有一个集合WorkflowActivityInstanceTransitions表示工作流状态的转换.转换在一个Transitions属性中映射.

因此:WorkflowActivityInstance< -WorkflowActivityInstanceTransition

我想要一个关于该对象的视图,它将给WorkflowActivityInstance状态包括它的当前状态,这将是最新的,WorkflowActivityInstanceTransition没有用户编码器在Transitions属性上执行它们自己的排序和选择.

最初,我有:

public virtual IWorkflowActivityInstanceTransition CurrentState
{
    get { return Transitions.OrderBy(q => q.TransitionTimeStamp).LastOrDefault(); }
}
Run Code Online (Sandbox Code Playgroud)

但我得到:

NHibernate.InvalidProxyTypeException:NHibernate.InvalidProxyTypeException:以下类型不能用作代理:FB.SimpleWorkflow.NHibernate.Model.WorkflowActivityInstance:方法CurrentState应为'public/protected virtual'或'protected internal virtual'.

我试图变得厚颜无耻,并将其转换为方法:

public IWorkflowActivityInstanceTransition GetCurrentState()
{
    return Transitions.OrderBy(q => q.TransitionTimeStamp).LastOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个非常相似的:

NHibernate.InvalidProxyTypeException:NHibernate.InvalidProxyTypeException:以下类型不能用作代理:FB.SimpleWorkflow.NHibernate.Model.WorkflowActivityInstance:方法GetCurrentState应为'public/protected virtual'或'protected internal virtual'.

我想CurrentState在我的模型类中保持非常简单的行为,并防止NHibernate过度使用并尝试映射/代理此属性.感觉这应该只是我不想映射的属性的属性...

我怎样才能做到这一点?

谢谢

弥敦道

nhibernate

3
推荐指数
1
解决办法
5174
查看次数

[Silverlight] WCF客户端的编程配置

我们正在通过WCF公开基于服务器的API开发Silverlight客户端.

我正在尝试将我的WCF客户端代码(工作正常)从基于配置的模型移动到编程模型.这将使我能够拥有一个"root"URL,我可以在启动时应用它,而不需要安装必须维护庞大的配置文件.

不过,我正在将我的配置转换为支持Silverlight的代码.

我在下面的配置中提供了一项服务:

<configuration>
    <system.serviceModel>
        <bindings>
            <customBinding>
                <binding name="CustomBinding_ISilverlightHelper">
                    <binaryMessageEncoding />
                    <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647">
                        <extendedProtectionPolicy policyEnforcement="Never" />
                    </httpTransport>
                </binding>
            </customBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:50072/API/WCF/Silverlight/SilverlightHelper.svc"
                binding="customBinding" bindingConfiguration="CustomBinding_ISilverlightHelper"
                contract="API.WCF.Silverlight.ISilverlightHelper" name="CustomBinding_ISilverlightHelper" />
        </client>
    </system.serviceModel>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何创建equivelant client-config代码.目前我有:

CustomBinding customBinding = new CustomBinding();
// I see I need to do something with customBinding but the properties don't seem 
    // logical
    // I have used BasicHttpBinding, but it just returns with "Not Found" (the service does resolve to a valid URL)
BasicHttpBinding basicHttpBinding = …
Run Code Online (Sandbox Code Playgroud)

silverlight wcf

2
推荐指数
1
解决办法
3895
查看次数

MSBuild:编写并调用自定义任务,但MSBuild认为我需要一个TaskFactory

我正在进入MSBuild来处理项目的各种目标,我发现它非常灵活.(它也帮助我了解CI系统的可能性)

我需要获得项目的当前SVN修订版本,为此我编写了一个调用SubWCRev并解析输出的自定义任务.

我使用元素引用它:

<UsingTask TaskName="xxx.Elements.Build.MSBuildTasks.SubWCRev" AssemblyFile="D:\dev\xxx_presentation\Build\xxx.Elements.Build.dll">
    <ParameterGroup>
        <LastCommittedRevision ParameterType="System.Int" Required="False" Output="True" />
        <MixedRevisionRangeMinimum ParameterType="System.Int" Required="False" Output="True" />
        <MixedRevisionRangeMaximum ParameterType="System.Int" Required="False" Output="True" />
        <HasLocalModifications ParameterType="System.Boolean" Required="False" Output="True" />
    </ParameterGroup>
</UsingTask>
Run Code Online (Sandbox Code Playgroud)

然后我执行任务......

  <Target Name="Version" BeforeTargets="BuildDatabase">
        <xxx.Elements.Build.MSBuildTasks.SubWCRev WorkingCopyDir="$(ProjectDir)..">
            <Output TaskParameter="LastCommittedRevision" ItemName="LastCommittedRevision" />
            <Output TaskParameter="MixedRevisionRangeMinimum" ItemName="MixedRevisionRangeMinimum" />
            <Output TaskParameter="MixedRevisionRangeMaximum" ItemName="MixedRevisionRangeMaximum" />
            <Output TaskParameter="HasLocalModifications" ItemName="HasLocalModifications" />
        </xxx.Elements.Build.MSBuildTasks.SubWCRev>
        <Message Text="Revision is @(LastCommittedRevision)" />
    </Target>
Run Code Online (Sandbox Code Playgroud)

我的问题是MSBuild坚持使用TaskFactory属性,本文档说这是可选的.而且我也看到TaskFactory特别适用于内联任务,我对此并不感兴趣.

错误消息是:

必需属性"TaskFactory"在元素UsingTask中为空或缺少.

我哪里错了?

(顺便说一句,我发现MSBuild Sidekick 3非常出色并且减少了可能成为一个相当复杂的脚本的阻力.)

msbuild msbuild-task

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