我目前正在使用最新的Visual Studio 2017 Release Candidate来创建.Net Standard 1.6库.我正在使用xUnit对我的代码进行单元测试,并且想知道你是否仍然可以在VS2017中测试内部方法.
我记得你可以在VS2015中使用一行AssemblyInfo.cs类来使指定的项目能够看到内部方法
[assembly:InternalsVisibleTo("MyTests")]
Run Code Online (Sandbox Code Playgroud)
由于VS2017 .Net标准项目中没有AssemblyInfo.cs类,我想知道您是否还可以对内部方法进行单元测试?
我在使用HttpClient和BaseAddress属性调用webHttpBinding WCF端点时遇到问题.
HttpClient的
我创建了一个HttpClient实例,将BaseAddress属性指定为本地主机端点.
GetAsync Call
然后我调用GetAsync方法传递额外的Uri信息.
HttpResponseMessage response = await client.GetAsync(string.Format("/Layouts/{0}", machineInformation.LocalMachineName()));
Run Code Online (Sandbox Code Playgroud)
服务端点
[OperationContract]
[WebGet(UriTemplate = "/Layouts/{machineAssetName}", ResponseFormat = WebMessageFormat.Json)]
List<LayoutsDto> GetLayouts(string machineAssetName);
Run Code Online (Sandbox Code Playgroud)
问题
我遇到的问题是,是,/AndonService.svc
所述BaseAddress的一部分被截断,从而将得到的呼叫转到https://localhost:44302/Layouts/1100-00277
宁可https://localhost:44302/AndonService.svc/Layouts/1100-00277
导致404未找到.
是否有理由在GetAsync调用中截断BaseAddress?我该如何解决这个问题?
我刚刚创建了一个SQL Server 2005 SSRS报告,并且数据未显示在"预览"窗格中.
根据String参数从存储过程中正确填充数据集.我可以在"数据"窗格中执行它.在"预览"窗格中运行报表时,将显示正确的行数,但单元格的内容不包含任何数据
源数据集基于存储过程,在SQL Server 2005中传入String参数,返回临时表的内容.然后,数据集将字段映射到本地.我可以在数据视图中正确执行此操作.
存储过程
ALTER PROCEDURE spWebReportStage25BuildReview
@BuildNumber as nvarchar(50)
Run Code Online (Sandbox Code Playgroud)
临时表模式
CREATE TABLE #tmpModelZones
(
BuildID bigint NOT NULL,
BuildNo nvarchar(50) NOT NULL,
ModelID int NOT NULL,
ModelName nvarchar(50) NOT NULL,
ZoneID int NOT NULL,
ZoneName nvarchar(50) NOT NULL,
SortOrder int NOT NULL,
Created bit DEFAULT 0 NOT NULL,
Closed bit DEFAULT 0 NOT NULL,
PRIMARY KEY (BuildID, ZoneID)
)
Run Code Online (Sandbox Code Playgroud)
SSRS数据集
SSRS数据集映射
SSRS数据集参数
使用参数执行数据集
显示的表上没有其他分组,过滤器或聚合.它只是一张平台
我使用webHttpBinding创建了一个新的IIS主机WCF服务,该webHttpBinding当前在我的开发机器上的IIS Express上运行,当我尝试"添加服务引用"时,服务正确构建并且Reference.cs文件看起来很好但是web .config或app.config文件未更新.
没有收到警告或错误消息.
服务和客户端都以.Net 4.5为目标.
服务配置
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="webInteropSecureBinding" allowCookies="false" maxBufferPoolSize="2097152" maxBufferSize="2097152" maxReceivedMessageSize="2097152">
<security mode="Transport" />
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="PsmDataProvider.PsmProvider" behaviorConfiguration="SecureRest">
<clear />
<endpoint address="" binding="webHttpBinding" bindingConfiguration="webInteropSecureBinding" name="PsmProvider" contract="PsmDataProvider.IPsmProvider" listenUriMode="Explicit" behaviorConfiguration="webHttpBehavior" />
<endpoint address="mex" binding="mexHttpsBinding" name="mex" contract="IMetadataExchange" listenUriMode="Explicit" />
<host>
<baseAddresses>
<add baseAddress="https://localhost:44300/PsmProvider/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="SecureRest">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" …
Run Code Online (Sandbox Code Playgroud) 我有一个MVC控制器,其中post方法上的模型总是返回null.我不确定这是因为我在表单中使用了局部视图.
知道为什么模型没有返回控制器吗?
模型
加载模型
public List<Group> GetStaticMeasures(int businessUnitID)
{
List<Group> groups = ctx.Groups
.Include("Datapoints")
.Where(w => w.BusinessUnitID.Equals(businessUnitID))
.OrderBy(o => o.SortOrder).ToList();
groups.ForEach(g => g.Datapoints = g.Datapoints.OrderBy(d => d.SortOrder).ToList());
return groups;
}
Run Code Online (Sandbox Code Playgroud)
调节器
public ActionResult Data()
{
ViewBag.Notification = string.Empty;
if (User.IsInRole(@"xxx\yyyyyy"))
{
List<Group> dataGroups = ctx.GetStaticMeasures(10);
return View(dataGroups);
}
else
{
throw new HttpException(403, "You do not have access to the data.");
}
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Data(List<Group> model)
{
ViewBag.Notification = string.Empty;
if (User.IsInRole(@"xxx\yyyyyy"))
{
if (ModelState.IsValid)
{
ctx.SaveChanges(model); …
Run Code Online (Sandbox Code Playgroud) 我试图将手机大小布局上的整个应用程序的方向锁定为仅纵向,但在平板电脑大小的布局上允许纵向和横向。
我知道我可以将 Activity 归因于使用特定方向,但这适用于两种布局尺寸。
[Activity(
Label = "Brs.Members.Droid"
, MainLauncher = true
, Icon = "@mipmap/icon"
, Theme = "@style/Theme.Splash"
, NoHistory = true
, ScreenOrientation = ScreenOrientation.Portrait)]
public class SplashScreen : MvxSplashScreenActivity
{
public SplashScreen() : base(Resource.Layout.SplashScreen)
{
}
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以只排除手机尺寸设备上的横向布局?
我目前正在编写一个帮助库,通过Software Toolbox的TopServer连接到车间PLC .
TopServer库有x86和x64架构的单独版本,我想在运行时使用基于调用代码的CPU架构的后期绑定来加载适当的版本.两个库中的方法具有相同的签名.
我可以使用反射来使用下面的代码加载相关对象,但我想知道在调用代码中使用此实例的最佳方法是什么.
public class LateBinding
{
public static T GetInstance<T>(string dllPath, string fullyQualifiedClassName) where T : class
{
Assembly assembly = System.Reflection.Assembly.LoadFile(dllPath);
Type t = assembly.GetType(fullyQualifiedClassName);
return (T)Activator.CreateInstance(t);
}
}
Run Code Online (Sandbox Code Playgroud)
由于我是后期绑定,我没有获得运行前的类型,所以认为创建基于库方法签名的接口将是实现这两个版本的好方法.
有没有人对这种方法或其他方法的建议有看法?
我花了几个小时试图解决这个简单的问题,但没有感到高兴。
我的 SSRS 2008 报告中有两个表,它们绑定到不同的数据集,我需要根据传入的参数显示或隐藏相应的表。我已经使用表的隐藏属性完成了此操作,该属性按预期工作。我遇到的问题是,当隐藏顶部项目并显示其下方的项目时,我从隐藏的项目中得到了空白。
简单的例子
我创建了两个表并将它们绑定到同一数据源,并将它们垂直放置。
然后,我将顶部表格的隐藏属性设置为 true 并预览报告。
您可以看到第一个网格被隐藏,但空白区域仍然存在。根据我的调查,我确实看到了用于此目的的ConsumeContainerWhitespace属性,但就我而言,它并没有清除空白。
问题
有没有办法删除这些隐藏元素的空白?
我已经从 NuGet 编写了一个Json.Net v5.06 的小型异步库包装器,在更新了许多 Telerik 包后,我的 UnitTests 开始失败并出现MissingMethodException。
我创建了一个虚拟的非异步方法,该方法有效,所以我很困惑错误所在。
项目目标平台
.Net 4.5
x86CPU
异步操作
public class JsonSerialiser : ISerialiser
{
[InjectionConstructor]
public JsonSerialiser(IStringCompression streamCompressor, ILog logger)
{
if (streamCompressor == null) throw new ArgumentNullException("streamCompressor");
if (logger == null) throw new ArgumentNullException("logger");
XmlConfigurator.Configure();
this.streamCompressor = streamCompressor;
this.logger = logger;
}
public async Task<string> SerialiseAsync<T>(T serialseObject) where T : class
{
if (serialseObject == null) throw new ArgumentNullException("serialseObject");
try
{
return await JsonConvert.SerializeObjectAsync(serialseObject);
}
catch (JsonSerializationException ex)
{
logger.Error(ex); …
Run Code Online (Sandbox Code Playgroud) c# ×6
.net ×4
.net-4.5 ×2
sql ×2
sql-server ×2
android ×1
asp.net-mvc ×1
async-await ×1
json.net ×1
late-binding ×1
reflection ×1
ssrs-2008 ×1
unit-testing ×1
wcf ×1
xamarin ×1