我正在创建一个C#控制台应用程序,它从文本文件中读取文本,将其转换为JSON格式的字符串(保存在字符串变量中),并且需要将JSON请求POST到Web api.我正在使用.NET Framework 4.
我的奋斗是使用C#创建请求并获得响应.什么是必要的基本代码?代码中的注释会很有帮助.到目前为止我得到的是下面的内容,但我不确定我是否走在正确的轨道上.
//POST JSON REQUEST TO API
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("POST URL GOES HERE?");
request.Method = "POST";
request.ContentType = "application/json";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] bytes = encoding.GetBytes(jsonPOSTString);
request.ContentLength = bytes.Length;
using (Stream requestStream = request.GetRequestStream())
{
// Send the data.
requestStream.Write(bytes, 0, bytes.Length);
}
//RESPONSE HERE
Run Code Online (Sandbox Code Playgroud) 我试图理解OrganizationalItemItemsFilterData过滤器中的BasedOnSchemas选项的用途.
文档清楚地说明:"获取或设置BasedOnSchemas条件以仅返回使用给定模式的项目"因此,应该只能检索特定模式的组件,对吧?
这是我的代码:
LinkToSchemaData[] schemaLinks = new[] {
new LinkToSchemaData { IdRef = "tcm:113-362325-8" }
};
OrganizationalItemItemsFilterData filter =
new OrganizationalItemItemsFilterData();
filter.BaseColumns = ListBaseColumns.Extended;
filter.ItemTypes = new ItemType[] { ItemType.Component };
filter.Recursive = true;
filter.BasedOnSchemas = schemaLinks;
XElement items = client.GetListXml("tcm:113-14192-2", filter);
Run Code Online (Sandbox Code Playgroud)
items但是,XElement 将包含多种类型的组件,而不仅仅是schema tcm:113-362325-8
如何只检索基于我的架构的组件?
我正在尝试 Moq 一个 AzureCloudBlockBlob并让它返回一个,Stream以便我可以测试我的BlobStorage存储库是否正确处理输出。
但不知何故,返回的流总是空的。
单元测试代码:
//....
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write("sample data");
writer.Flush();
stream.Position = 0;
var blobMock = new Mock<CloudBlockBlob>(new Uri("http://tempuri.org/blob"));
blobMock
.Setup(m => m.ExistsAsync())
.ReturnsAsync(true);
blobMock
.Setup(m => m.DownloadToStreamAsync(It.IsAny<MemoryStream>()))
.Returns(Task.FromResult(stream));
//....
Run Code Online (Sandbox Code Playgroud)
存储库代码:
//....
var blob = GetContainer(container).GetBlockBlobReference(name);
if (await blob.ExistsAsync())
{
var ms = new MemoryStream();
await blob.DownloadToStreamAsync(ms);
ms.Seek(0, SeekOrigin.Begin);
return ms;
}
//....
Run Code Online (Sandbox Code Playgroud)
所以我返回MemoryStream ms的总是一个空流,而不是stream我在 MoqReturns()方法中使用的对象。
我怎样才能让那个 blob …
SDL Tridion 2011 SP1
我正在尝试使用GUI扩展将标签页添加到Tridion中的ContactView页面.我设法使用以下命令将扩展添加到ComponentView:
<ext:tabpages>
<ext:add>
<ext:extension assignid="ContactWishlist" name="Wishlist Info"
insertbefore="InfoTab">
<ext:control>/WebUI/Editors/ContactWishlist/ContactWishlist.ascx</ext:control>
<ext:pagetype>ContactWishlist.WishlistInfo</ext:pagetype>
<ext:dependencies>
<cfg:dependency>ContactWishlist.WishlistInfo</cfg:dependency>
</ext:dependencies>
<ext:apply>
<ext:view name="ComponentView">
<ext:control id="MasterTabControl"/>
</ext:view>
</ext:apply>
</ext:extension>
</ext:add>
</ext:tabpages>
Run Code Online (Sandbox Code Playgroud)
但当我将'ComponentView'更改为'ContactView'时,Contact屏幕中的'Info'选项卡前面没有显示任何内容(也没有错误).出站电子邮件是否需要不同的GUI扩展设置?
我们目前正在从SDL Tridion 2009迁移到2011 SP1.就模板而言,我们只有1个问题与默认的出站电子邮件TBB有关,而且这个问题很容易通过更新旧的2009默认出站电子邮件TBB与新问题来解决.
我们还没有任何其他问题.
是否有必要更新所有模板以开始使用新的2011默认模板构建块?保持一切都是最新的显然是一种很好的做法,但逻辑上是否也有任何变化?
我在模式(Tridion 2011 SP1)中有一个richtext字段,附带了一个基本的XSLT过滤器(默认的XSLT或自定义的XSLT,对于这个问题无关紧要).
在IE9中,当我基于该模式创建组件时,Source选项卡中的XHTML被渲染得很好,没有任何名称空间,例如:
<p>a paragraph</p>
<p>
<a href="http://www.sdltridion.com">a link</a>
</p>
Run Code Online (Sandbox Code Playgroud)
我能够保存组件.
但是在Firefox(16.0.2,不支持)中,命名空间在"源"选项卡中呈现:
<p xmlns="http://www.w3.org/1999/XSL/Transform">a paragraph</p>
<p xmlns="http://www.w3.org/1999/XSL/Transform">
<a href="http://www.sdltridion.com">a link</a>
</p>
Run Code Online (Sandbox Code Playgroud)
这导致以下XML验证错误:
The element 'Paragraph' in namespace 'http://www.yme.com/GeneralContent' has invalid child element 'p' in namespace 'http://www.w3.org/1999/XSL/Transform'. List of possible elements expected: any element in namespace 'http://www.w3.org/1999/xhtml'..
Now I know that it's an unsupported version of a Firefox, but where is this namespace coming from? The namespace defined in the Richtext XSLT is http://www.w3.org/1999/XSL/Transform...
And does anyone know of …
我试图弄清楚如何检查自定义后端中的组件是否为空(例如,在Tridion中找不到).我只是没有看到如何检查这个,除了捕获错误.
Component comp = (Component)session.GetObject(base.ComponentUri);
if (component != null)
{
bool isCheckedOut = component.IsCheckedOut;
}
else
{
// how do I get in here!
}
Run Code Online (Sandbox Code Playgroud)
我100%确定uri是正确的('tcm:113-438134')并且100%确定Tridion中没有带有该URI的项目.上面的代码将在component.IsCheckedOut上抛出一个错误:
The item tcm:113-438134-16 does not exist.
Run Code Online (Sandbox Code Playgroud)
如何检查Tridion项目的存在?我已经尝试将演员放在最后,这没有多大帮助:
Component comp = session.GetObject(base.ComponentUri) as Component;
Run Code Online (Sandbox Code Playgroud)
我尝试过根本不使用可识别对象,但也没有任何区别.谁知道怎么做?
我正在重写.NET后端应用程序,以便它使用Tridion 2011 CoreService.有一部分它会在Tridion中获得一个使用特定关键字的文件夹.在当前的设置中,这是通过在关键字本身上调用方法'GetListClassifiedItems'来完成的,但我想如何使用CoreService执行此操作?
CoreService API中有一个ClassifiedItemsFilterData,但我该如何使用它?
我试过这段代码:
ClassifiedItemsFilterData filter = new ClassifiedItemsFilterData()
{
ItemTypes = new ItemType[] { ItemType.Folder }
};
XElement list = client.GetListXml("tcm:113-363331-1024", filter);
Run Code Online (Sandbox Code Playgroud)
但它只返回关键字本身,URI tcm:113-363331-1024,而不是使用它分类的文件夹.
如果我也将组件ItemType添加到过滤器中,我将获得已使用此keywordk分类的所有组件,但仍然不是该文件夹.
我如何获得该文件夹?
如何在xml元素中添加xsi:type。
我正在用C#编写例程,该例程正在使用XmlSerializer序列化Xml文件。一切似乎都很好,除了我最初认为是次要的东西,但事实并非如此。
这是我的代码,
public class OuterElement
{
public string firstElement { get; set; }
public string secondElement { get; set; }
public InnerElement innerElement = new InnerElement();
}
public class InnerElement
{
[XmlAttribute(AttributeName="xsi:type")]
public string type { get; set; }
}
private void Form1_Load(object sender, EventArgs e)
{
XmlSerializer serializer = new XmlSerializer(typeof(OuterElement));
OuterElement outerElement = new OuterElement();
outerElement.firstElement = "name";
outerElement.secondElement = "CD";
outerElement.innerElement.type = "testsample";
using (TextWriter writer = new StreamWriter(@"G:\abc.xml"))
{
serializer.Serialize(writer, outerElement);
}
}
Run Code Online (Sandbox Code Playgroud)
'
我想要这样的xml, …
表单在内部停止工作。返回cursor to c=s.Substring...在while
StreamReader sr= new StreamReader("Unos.txt");
s = sr.ReadLine();
c = s.Substring(s.IndexOf(',') + 2, (s.Length - s.IndexOf(',') + 2) - (s.Length - s.IndexOf('-') + 2));
if ((String.Equals(cbRazred.SelectedItem.ToString(), c.Substring(0, (c.IndexOf('-')))) &&
String.Equals(cbOdeljenje.SelectedItem.ToString(), odeljenje.ToString()))) lbSpisak.Items.Add(s.Substring(0, s.IndexOf(',')));
while (s != null)
{
s = sr.ReadLine();
c = s.Substring(s.IndexOf(',') + 2, (s.Length - s.IndexOf(',') + 2) - (s.Length - s.IndexOf('-') + 2));
if ((String.Equals(cbRazred.SelectedItem.ToString(), c.Substring(0, (c.IndexOf('-')))) &&
String.Equals(cbOdeljenje.SelectedItem.ToString(), odeljenje.ToString()))) lbSpisak.Items.Add(s.Substring(0, s.IndexOf(',')));
}
sr.Close();
Run Code Online (Sandbox Code Playgroud) tridion ×6
tridion-2011 ×5
c# ×4
asp.net-core ×1
json ×1
moq ×1
post ×1
streamreader ×1
while-loop ×1
xml ×1
xslt ×1