でHTMLを返す無効な資格情報は、私はスローカスタム認証プロバイダーを持ってHttpError資格情報はとても似無効な場合:私はわざわざRESTを介してこのサービスにアクセスするときServicestackのSOAP - 私のサービスには対応し
throw HttpError.Unauthorized("Invalid Username or Password");
無効な資格情報を入力し、私が期待される応答を取得:
{
"ResponseStatus": {
"ErrorCode": "Unauthorized",
"Message": "Invalid UserName or Password",
}
}
はしかし、SOAPクライアントを経由して同じことをやって、私はIISサーバーからHTML応答を得る:
これは、応答を逆シリアル化できないため、SOAPクライアントが中断する原因となります。これは、間違ったデータ値がリクエストに含まれている場合にも発生します。整数パラメータに文字列値を設定します。要求が処理されているサービス(HttpError.NotFoundがスローされている)で例外が発生した場合、応答は正常です。私は同様の質問がhereと回答されていることを知っていますが、2013年以降に更新されていません。レスポンスを設定する方法はありますか?
編集が1
私はそう見えるように私のweb.configファイルを更新しました(system.webServerで、私が代わりに "のHttpModules" の "モジュール" を使用していた。):
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<httpModules>
<add name="FormsAuthenticationDisposition" type="ServiceStack.SuppressFormsAuthenticationRedirectModule, ServiceStack" />
</httpModules>
<httpHandlers>
<add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" />
</httpHandlers>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add name="FormsAuthenticationDisposition" type="ServiceStack.SuppressFormsAuthenticationRedirectModule, ServiceStack" />
</modules>
<urlCompression doStaticCompression="true" doDynamicCompression="false" />
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
と私のAPPHOSTには、以下があります。
SetConfig(new HostConfig
{
HandlerFactoryPath = "/api"
});
SuppressFormsAuthenticationRedirectModule.PathToSupress = Config.HandlerFactoryPath;
は、しかし、私はまだ前と同じエラーを取得しています。私はこれが、最初に具体的に認証するのではなく、すべての要求のヘッダーとして資格情報を渡しているのかどうか疑問に思っていますか?この同じエラーは、例えば次のような場合に発生することを指摘する価値がある。文字列は整数パラメータに設定されます。このソリューションは、実際の作業ではありません
編集2
。私は間違ったHandlerFactoryPathを定義した
SetConfig(new HostConfig
{
HandlerFactoryPath = "api"
});
(私たちは、サービスコールを実装する方法に基づいて)1つの提案です:あなたは、例えば '新しいHttpResponseMessageを返す() { コンテンツは=新しいStringContent(結果)のために、を送りたい「正確な」応答を構築StatusCode = HttpStatusCode.InternalServerError }; ' このようにして、出力を完全に制御できます。 – Subbu
@Subbuこの問題は、間違ったデータ値がリクエストに含まれている場合にも発生する可能性があります。整数パラメータに文字列値を設定します。このような状況では、サービス・スタックが生成する応答を制御することはできません。私はこれを含めるために私の質問を編集しました。 –