After a rejected login the site redirects back to /login carrying the API's error message in the query string. That message is Persian, and HTTP header values must be ASCII, so Kestrel threw InvalidOperationException and the user got an error page instead of the login form with the reason for the failure. Encode both the path and the message. Not noticed before because IIS Express tolerates the non-ASCII Location header; it surfaces as soon as the site is run on Kestrel. |
||
|---|---|---|
| docs/getting-started | ||
| GanjooRazor | ||
| RMuseum | ||
| TajikGanjoor | ||
| .gitattributes | ||
| .gitignore | ||
| GanjoorService.sln | ||
| LICENSE | ||
| README.md | ||
| RUNNING_LOCALLY.md | ||
| SEMANTIC_SEARCH_SETUP.md | ||
GanjoorService
Ganjoor museum and ganjoor.net own backend (ASP.NET Core Web API) and frontend (Razor Pages) code
این کد وب سرویس گنجینهٔ گنجور و گنجور و همچنین کد سایت گنجور است.
Running it locally
New to this codebase and want to run your own copy? See RUNNING_LOCALLY.md for a full step-by-step guide — cloning, database setup, and Visual Studio configuration.
The one thing that guide covers in more depth but is worth knowing up front: the production database is never published, since it contains private/user-linked data. What is published is a git repository of the poetry content itself (poets, categories, poems — allowlisted, no user data): github.com/ganjoor/ganjoor-data. A fresh local install can pull real content from there via Admin → مالی و سایت → درونریزی دادهٔ عمومی (also reachable automatically the first time you run the site against an empty database) instead of starting from nothing.
Semantic search
The "find a poem about..." feature has its own setup guide, separate from the main one above — it needs a downloaded ONNX model and published embeddings data on top of the usual database setup: SEMANTIC_SEARCH_SETUP.md. Also has a real troubleshooting section covering the actual problems hit building this feature, not a generic checklist — worth reading before assuming something new is broken.
