我的瀏覽器出現問題,無法識別我在響應中發送的內容類型,並嘗試下載文件而不是顯示它。瀏覽器無法正確識別內容類型標題
我有一個通用的處理程序(名爲SPARQL.ashx)寫在ASP.Net中,它做了一些工作,併產生了兩種可能類型的對象。它可以獲得SPARQLResultSet或圖形,然後在使用適當的Save方法將內容發送給用戶之前設置適當的內容類型。代碼片段如下:
//Execute the Query
Object result = store.ExecuteQuery(sparqlquery);
if (result is SPARQLResultSet)
{
//Return as SPARQL Results XML Format
context.Response.ContentType = MIMETypesHelper.SPARQL[0];
SPARQLResultSet resultset = (SPARQLResultSet)result;
resultset.Save(new StreamWriter(context.Response.OutputStream));
}
else if (result is Graph)
{
//Return as Turtle
context.Response.ContentType = MIMETypesHelper.Turtle[0];
Graph g = (Graph)result;
TurtleWriter ttlwriter = new TurtleWriter();
ttlwriter.PrettyPrintMode = true;
ttlwriter.Save(g, new StreamWriter(context.Response.OutputStream));
}
我的問題是,我的瀏覽器通常會提示下載結果,而不是儘管一個格式基於XML和基於其他純文本顯示它們,因此都應該顯示在任何現代瀏覽器中。
行爲因瀏覽器而異,有些會提示下載,無論結果格式如何,有些會爲一個而不是另一個。
我可能需要以某種方式配置IIS以確保發送正確的MIME類型。爲了記錄,我有在IIS中註冊的官方文件擴展名和MIME類型。或者這是我使用通用處理程序的問題?還是有人有任何其他想法,爲什麼這可能會發生?
編輯
增加從MIMETypesHelper類代碼爲清楚起見
/// <summary>
/// Helper Class containing arrays of MIME Types for the various RDF Concrete Syntaxes
/// </summary>
/// <remarks>The first type in each array is the canonical type that should be used</remarks>
public class MIMETypesHelper
{
/// <summary>
/// MIME Types for Turtle
/// </summary>
public static string[] Turtle = { "text/turtle", "application/x-turtle", "application/turtle" };
/// <summary>
/// MIME Types for RDF/XML
/// </summary>
public static string[] RDFXML = { "application/rdf+xml" };
/// <summary>
/// MIME Types for Notation 3
/// </summary>
public static string[] Notation3 = { "text/n3", "text/rdf+n3" };
/// <summary>
/// MIME Types for NTriples
/// </summary>
public static string[] NTriples = { "text/plain" };
/// <summary>
/// MIME Types for SPARQL Result Sets
/// </summary>
public static string[] SPARQL = { "application/sparql-results+xml" };
///etc.
}
發佈從您的服務返回的確切HTTP標頭可能會有幫助。在Fiddler(www.fiddler2.com)中,只需右鍵單擊該會話,然後選擇複製>標題。 – EricLaw 2009-06-29 21:42:50