小编Stu*_*ord的帖子

返回自定义类的WCF服务在Reference.cs中生成错误

我在Visual Studio 2008中有一个WCF服务项目,它包含大约12个方法,其中一些返回原始类型,如bool或string.我还有一个Visual Studio单元测试项目,它引用了已发布的WCF服务.当所有返回类型都是原始时,Test Project会成功编译.

如果我向返回自定义类的服务添加一个新方法,发布它并更新测试项目中的服务引用,它就不会编译.错误是: -

  1. "PublisherFaultException"类型已包含"Reason"的定义.
  2. "PublisherFaultException"类型已包含"PropertyChanged"的定义.
  3. 类型'Publisher.Test.LibraryReference.PublisherFaultException'已经定义了一个名为'RaisePropertyChanged'的成员,它具有相同的参数类型.

全部在自动生成的reference.cs文件中.

WCF服务方法的合同是: -

Page GetItem(string path);
Run Code Online (Sandbox Code Playgroud)

Page类具有DataContract属性,它的公共属性具有DataMember属性.

我不愿意修改Reference.cs文件,因为每次更新服务时我都需要这样做.

任何人都知道为什么会这样吗?

斯图尔特.

c# wcf datacontract visual-studio-2008

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

使用 MS-OFBA 的 ASP.NET Core 中的 IT Hit WebDAVServer 中的身份验证问题

我们希望在 ASP.NET Core WebDAV 服务器示例 ( https://www.webdavsystem.com/server/server_examples/cross_platform_asp_net_core_sql/ ) 中实现 MS-OFBA 。该示例已经具有用于基本和摘要身份验证的代码,但我们需要支持 MS-OFBA。

我已经实现了一个类似于现有基本和摘要中间件类的 MSOFBAuthMiddleware 类,如果它是来自 Office 应用程序的请求,我们会在其中设置所需的“X-FORMS_BASED_AUTH_”标头。

这在一定程度上起作用:

  • 标题被发回,Word(Excel 等)打开对话框并显示登录页面。
  • 我们可以登录成功,设置认证cookie,页面重定向用户。
  • 在此重定向中,当我们检查用户是否通过身份验证时,httpContext.User.Identity.IsAuthenticated 值始终为 false。

最初我们一直在尝试使用本地登录页面,但最终我们更愿意使用我们现有的 Identity Server 登录页面。我们可以再次显示登录页面,但重定向不起作用。

在登录后的身份服务器中,我们应该重定向到“/connect/authorize/login?client_id=mvc.manual&response_type=id_token&scope=openid%20profile%20&redirect_uri=http%3A%2F%2Flocalhost%3A5000%2Faccount%2Fcallback&state=random_state&nonce=random_no form_post”,但实际上我们被重定向到应用程序“/”的根目录。

更新:我已经解决了这个重定向问题,Identity Server 现在重定向到正确的 URL,但中间件中的 httpContext.User.Identity.IsAuthenticated 值仍然始终为 false。

Startup.cs(部分)

public void ConfigureServices(IServiceCollection services)
{
    services.AddWebDav(Configuration, HostingEnvironment);
    services.AddSingleton<WebSocketsService>();
    services.AddMvc();
    services.Configure<DavUsersOptions>(options => Configuration.GetSection("DavUsers").Bind(options));
    services.AddAuthentication(o =>
        {
            o.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            o.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            o.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        }
    ).AddCookie(CookieAuthenticationDefaults.AuthenticationScheme);
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    if (env.IsDevelopment())
        app.UseDeveloperExceptionPage();

    //app.UseBasicAuth(); …
Run Code Online (Sandbox Code Playgroud)

c# ithit-webdav-server identityserver4 asp.net-core-2.0

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

无法使用 Selenium WebDriver 自动登录到 Azure Active Directory

我正在尝试使用 Azure AD 测试登录到我们的 Web 应用程序,但“登录”按钮上的单击操作似乎未注册。这是代码:

\n\n
namespace WebApp.Tests\n{\n    using System;\n    using System.IO;\n    using System.Threading;\n    using FluentAssertions;\n    using Microsoft.VisualStudio.TestTools.UnitTesting;\n    using OpenQA.Selenium;\n    using OpenQA.Selenium.IE;\n    using OpenQA.Selenium.Remote;\n    using OpenQA.Selenium.Support.UI;\n\n    [TestClass]\n    public class LoginTests\n    {\n        [TestMethod]\n        public void CanLogin()\n        {\n            string internetExplorerDriverServerDirectory = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory);\n            IWebDriver driver = new InternetExplorerDriver(internetExplorerDriverServerDirectory)\n            {\n                Url = "https://localhost:44399"\n            };\n\n            try\n            {\n                driver.Manage().Cookies.DeleteAllCookies();\n\n                WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(15));\n                wait.Until(d => d.FindElement(By.Id("logonIdentifier")));\n\n                driver.FindElement(By.Id("logonIdentifier")).SendKeys("username");\n                driver.FindElement(By.Id("password")).SendKeys("password");   \n                driver.FindElement(By.Id("next")).Click();\n\n                wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));\n                wait.Until(d => d.FindElement(By.ClassName("logo_title")));\n\n                driver.FindElement(By.ClassName("logo_title")).Text.Should().Contain("HELLO!");\n            }\n            finally\n            {\n                driver.Close();\n …
Run Code Online (Sandbox Code Playgroud)

c# selenium selenium-webdriver azure-active-directory

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

在C#中反序列化XML时,如何获得对父对象的引用?

我似乎无法让这个工作,这是我的(剥离)代码: -

[XmlRoot("report")]
public class Report
{
    [XmlArray("sections"), XmlArrayItem("section")]
    public List<Section> Sections;
}

public class Section
{
    public Report Report;
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

.net c# serialization parent-child

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