現在、xmlファイルからブラウザにデータを読み込んで返すusercontrolがあります。 xmlファイルは別のサーバーにあります。コードは動的URLを生成し、GetStreamメソッドを介してそのURLからxmlをブラウザに返します。これは期待どおりに動作します。私が今できる必要があるのは、それを一歩前進させることです。返されたデータには、htmlファイルへのリンクのリストが表示されます。これらのリンクは、URLを開くのと同じように企業ネットワーク内で動作しますが、ファイアウォール制限の企業ネットワーク外からは機能しません。しかし、私たちは明らかにそのサーバからのデータを表示する能力を持っています.xmlファイルからのデータを表示することができます。これはhtmlファイルと同じ場所/サーバにあります。では、ユーザーがこれらのリンクの1つをクリックすると、どのようにhtmlデータを表示するのですか?htmlページを表示するために "GetStream"タイプのメソッドを使用する必要があります
は、ここでは、これまで持っているものです。
// Returns a dataset from xml with the html files available to a vendor.
private static DataSet GetDocuments(string VendorId)
{
DataSet ds = new DataSet("VendorDocuments");
if (null != VendorId)
{
string uri = ILINKURL + "/supplierstaging/" + VendorId + "/listinfo.xml";
Stream stream = GetStream(uri);
ds.ReadXml(stream);
Logger.Write("Requested drawings for vendor '" + VendorId + "' at " + uri + ".", "Machinery", 5, 200, System.Diagnostics.TraceEventType.Information);
}
return ds;
}
//ここでGETSTREAM方法
public static Stream GetStream(string uri)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
Logger.Write("got response stream from CompressionMachinery.GetStream('" + uri + "')", "Machinery", 4, 202, System.Diagnostics.TraceEventType.Information);
return stream;
}
//ここでは、我々は、HTMLから取得したものを表示するために使用するデータソースとGridViewのコードだです
<asp:ObjectDataSource ID="CADDrawingsDataSource" runat="server"
SelectMethod="GetFiles" TypeName="DataAccess.CompressionMachinery"
FilterExpression="file_type = '{0}' OR 'ALL' = '{0}'">
<FilterParameters>
<asp:ControlParameter ControlID="rblSearchFileType" Name="file_type"
PropertyName="SelectedValue" Type="String" />
</FilterParameters>
<SelectParameters>
<asp:ControlParameter ControlID="txtPartNumber" DefaultValue=""
Name="PartNumber" PropertyName="Text" Type="String" />
</SelectParameters>
<asp:GridView ID="gvCADDrawings" runat="server" AllowPaging="True"
AllowSorting="True" DataSourceID="CADDrawingsDataSource"
EmptyDataText="No drawings found." PageSize="200"
AutoGenerateColumns="False" DataKeyNames="file_name">
<Columns>
...
<asp:TemplateField HeaderText="File Name" SortExpression="file_name">
<ItemTemplate>
<asp:HyperLink ID="hlFileName" runat="server" Text='<%# Eval("file_name") %>' NavigateUrl='<%# GetUrl(Eval("file_name")) %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
...
</Columns>
</asp:GridView>
//と関連する分離コード
protected string GetUrl(object file_name)
{
string url = m_PartNumberUrlPrefix + m_VendorId + "/";
if (null != file_name)
{
string str = (string)file_name;
string[] stringArray = str.Split('.');
string partNumber = stringArray[0];
url += partNumber + m_PartNumberUrlSuffix;
}
return url;
}
これはネットワークの内部が、それにはないネットワークの外部から動作しません覚えておいてください。だから私は本質的に私たちがXMLファイルでやっていることをやり遂げてブラウザにストリームする方法があると思っています。それについてどうやってどうやって行くのかははっきりしない。
助けがあれば助かります。
GetStreamメソッドが表示されていないことに気づいていますか?これは.NETやC#の一部ではありません。また、XMLファイルにリンクのリストが表示されていますか? –
Johnさん、ありがとうございますGetStreamメソッドは次のとおりです: – PushCode
public static Stream GetStream(string uri) { HttpWebRequest request =(HttpWebRequest)WebRequest.Create(uri); HttpWebResponse response =(HttpWebResponse)request.GetResponse(); ストリームストリーム= response.GetResponseStream(); Logger.Write( "CompressionMachinery.GetStream( '" + uri + "')"、 "Machinery"、4,202、System.Diagnostics.TraceEventType.Information)からの応答ストリームを取得しました。 戻りストリーム。 } – PushCode